Некоторое время назад я использовал названный сервис оптимизации PNG (я думаю), "smush это". Вы подали его weblink, и это возвратило zip всех изображений PNG с их размерами файла приятно, ну, в общем, smushed...
Я хочу реализовать подобную опцию оптимизации как часть процесса загрузки изображения моего веб-сайта; кто-либо знает о существующей ранее библиотеке (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
Я бы усомнился в мудрости выброса других порций (таких как gAMA и iCCP), но если вы хотите это сделать, то достаточно просто использовать 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-буквенный тип для критической порции начинается с заглавной буквы)
.Пока ваш PHP скомпилирован с поддержкой GD2 (в настоящее время это довольно распространено):
<?php
$image = imagecreatefromstring(file_get_contents('/path/to/image.original.png'));
imagepng($image, '/path/to/image.smushed.png', 9);
Это будет считываться в любом формате изображения, который понимает GD2 (а не только PNG) и выводить PNG gzipped как максимальный уровень сжатия без ущерба для качества.
Однако сегодня это может быть менее полезным, чем несколько лет назад; большинство редакторов изображений уже делают это, так как gzipping не стоит столько CPU, сколько раньше.
Вы слышали о PNGCrush? Вы можете проверить исходный код, часть PNG и MNG Tools на SourceForge , и расшифровать или обернуть его на Python.