簡體中文 | English
AGPicCompress 是一個用于圖片壓縮的 Python 項目,支持 JPEG 和 PNG 格式的圖片壓縮。
-
對于 JPEG 圖片,AGPicCompress 使用 mozjpeg 進行壓縮
-
對于 PNG 圖片,AGPicCompress 使用 pngquant 進行壓縮
二者都可以在保證視覺質(zhì)量的前提下減小文件大小,以保證壓縮后的圖片在肉眼上無差異,甚至無損壓縮。
- 支持批量處理
- 支持導出圖片成 WebP 格式
AGPicCompress 可以完全離線運行。所有圖像壓縮都在本地處理。
AGPicCompress 通過合理的算法選擇和參數(shù)配置,能夠在減小圖片文件大小的同時盡可能地保持圖片質(zhì)量,滿足用戶對圖片壓縮的需求。
![]() |
![]() |
---|---|
![]() |
![]() |
上面分別是 JPEG 和 PNG 圖片在默認參數(shù)下的壓縮前后對比,你可以打開或者下載圖片查看效果于大小差異。
您可以按照以下說明進行安裝和配置,從而在本地環(huán)境中使用 AGPicCompress 進行圖片壓縮。
AGPicCompress 需要依賴于 mozjpeg 和 pngquant
其中你可能需要手動安裝 pngquant,你可以參考 pngquant 官方文檔并將其添加到對應(yīng)位置
AGPicCompress 會在以下位置檢測 pngquant 是否存在,你可以自由配置
- 環(huán)境變量(推薦)
- AGPicCompress 目錄下
- AGPicCompress 目錄下的
ext
目錄
以便 AGPicCompress 能夠找到 pngquant 并使用它進行 PNG 圖片的壓縮
您可以通過以下方式獲取 AGPicCompress 項目的代碼:
git clone https://github.com/aoguai/AGPicCompress
cd AGPicCompress ## 進入 AGPicCompress 目錄
pip install -r requirements.txt # install Python helpers' dependencies
您可以通過以下方式運行 AGPicCompress 項目:
- 使用命令行
同時你可以通過
cd AGPicCompress ## 進入 AGPicCompress 目錄 python ImageCompressor.py <input_file> -o <output_file> -q <quality>
查看更多幫助信息cd AGPicCompress ## 進入 AGPicCompress 目錄 python ImageCompressor.py --help
- 啟動 Web Demo 服務(wù)
然后訪問對應(yīng)的地址使用,默認地址為
cd AGPicCompress ## 進入 AGPicCompress 目錄 python backend/main.py
http://localhost:8089/
- 使用函數(shù)調(diào)用
具體請參考
from ImageCompressor import compress_image compress_image(input_file, output_file, quality)
ImageCompressor.py
中的compress_image
函數(shù)
AGPicCompress 項目還提供了 Windows 環(huán)境下的可執(zhí)行文件,Windows 用戶可以直接下載可執(zhí)行文件并按照說明進行使用,便捷地完成圖片壓縮任務(wù)。
你可以通過 AGPicCompress --help 來獲取相關(guān) CIL 參數(shù)信息與幫助
Usage: ImageCompressor.py [OPTIONS] FP
通過命令行壓縮圖像。
:param fp: 圖像文件路徑或目錄路徑。 :type fp: str
:param force: 如果存在同名文件是否覆蓋,默認為 False。 :type force: bool
:param quality: 壓縮質(zhì)量。格式如 80-90 或 90,默認為 80。 :type quality: int or tuple[int, int]
:param output: 輸出路徑或輸出目錄。 :type output: str
:param webp: 轉(zhuǎn)換圖像為 WebP 格式,默認為 False。 :type webp: bool
:param target_size: 目標文件大?。▎挝唬篕B)。指定后將忽略質(zhì)量參數(shù)。 :type target_size: int or None
:param size_range: 文件大小的最小值和最大值(單位:KB)。嘗試在保持質(zhì)量的同時確保文件大小在范圍內(nèi)。 :type size_range: tuple(int, int) or None
:param webp_quality: WebP 轉(zhuǎn)換的質(zhì)量(1-100)。默認為 100。 :type webp_quality: int
Options:
-f, --force, --violent 如果存在同名文件是否覆蓋,默認為 False。
-q, --quality QUALITYINTEGER 壓縮質(zhì)量。80-90 或 90,默認為 80。
-o, --output TEXT 輸出路徑或輸出目錄。
--webp 轉(zhuǎn)換圖像為 WebP 格式,默認為 False。
-t, --target-size INTEGER 目標文件大?。▎挝唬篕B)。指定后將忽略質(zhì)量參數(shù)。
-s, --size-range INTEGER... 文件大小的最小值和最大值(單位:KB)。嘗試在保持質(zhì)量的同時確保文件大小在范圍內(nèi)。
-wq, --webp-quality INTEGER WebP 轉(zhuǎn)換的質(zhì)量(1-100)。默認為 100。
--help 顯示幫助信息。
感謝以下開源項目對 AGPicCompress 的支持:
我的相關(guān)開源項目:
AGPicCompress 原屬于該項目的一部分
AGPicCompress 是一個開源項目,非常歡迎社區(qū)的參與。要為該項目做出貢獻,請遵循貢獻指南。
AGPicCompress 使用 GPL-3.0 license 進行開源,詳情請參閱 LICENSE 文件。