前段時間,我使用了一個名爲(我認爲)的PNG優化服務「抹黑它」。你給它一個網絡鏈接,它返回一個所有的PNG圖像與他們的文件很好,壓縮,壓制...PNG優化工具
我想實現一個類似的優化功能,作爲我的網站的圖像上傳過程的一部分;有沒有人知道我可以利用這個預先存在的庫(PHP或Python優先)? Google簡要介紹了幾種命令行風格的工具,但如果可能的話,我寧願不要沿着這條路線走。
前段時間,我使用了一個名爲(我認爲)的PNG優化服務「抹黑它」。你給它一個網絡鏈接,它返回一個所有的PNG圖像與他們的文件很好,壓縮,壓制...PNG優化工具
我想實現一個類似的優化功能,作爲我的網站的圖像上傳過程的一部分;有沒有人知道我可以利用這個預先存在的庫(PHP或Python優先)? Google簡要介紹了幾種命令行風格的工具,但如果可能的話,我寧願不要沿着這條路線走。
用PHP執行這個命令行工具
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB -brute -l 9 -max -reduce -m 0 -q IMAGE
optipng -o7 -q pngout.png
pngout pngout.png -q -y -k0 -s0
advpng -z -4 pngout.png > /dev/null
嘿,它已經6年了,但我注意到你在線 - 所以這些都是一個不錯的工具列表。你能列出所有的壓縮工具爲PNG/JPG和類似?我只需要你使用/喜歡的名稱列表,因爲這些工具很好,我懷疑你可能在6年內找到了更好的東西:)在此先感謝。很好的回覆。 – S00 2016-03-04 23:39:07
只要你的PHP與GD2支持(現在很常見的)編譯:
<?php
$image = imagecreatefromstring(file_get_contents('/path/to/image.original.png'));
imagepng($image, '/path/to/image.smushed.png', 9);
這將在任何圖像格式GD2理解(不只是PNG)讀取和輸出gzip作爲最大壓縮PNG而不犧牲質量。
雖然今天它的使用可能比幾年前少,大多數圖像編輯器已經這樣做了,因爲gzip並不像以前那樣花費CPU多。
您是否聽說過PNGCrush?你可以看看源代碼,PNG and MNG Tools at SourceForge的一部分,然後用Python進行轉錄或包裝。
我會質疑扔掉其他塊(如GAMA和政府間委員會)的智慧,但如果這是你想要做的是相當容易使用PyPNG去除大塊內容:
#!/usr/bin/env python
import png
import sys
input=sys.stdin
out=sys.stdout
def critical_chunks(chunks):
for type,data in chunks:
if type[0].isupper():
yield type,data
chunks = png.Reader(file=input).chunks()
png.write_chunks(out, critical_chunks(chunks))
的critical_chunks功能基本上過濾掉除關鍵PNG塊外的所有關鍵字(關鍵塊的4個字母類型以大寫字母開頭)。
這並沒有改變zlib壓縮,因爲它通過未改變的塊傳遞。 – 2010-01-04 16:31:06
,我不認爲任何流行的工具(使用OptiPNG ,pngcrush等人c)有綁定。 ImageMagick(用於PHP)和PIL(用於Python)將通過調整輸出設置來幫助您,但命令行工具更加優化。 – 2010-01-03 02:08:03