CLIO: command line image optimizer 1.0
8 апреля 2011
До недавнего времени для оптимизации изображений я пользовался, в основном, smush.it, иногда чередуя его с Google Page Speed. И тут возникла необходимость оптимизировать процесс: понадобилось оптимизировать около 300 изображений.
Так появился данный набор, умеющий жать PNG/JPEG. На вход optimize.bat
подаётся директория, из неё рекурсивно выбираются все изображения и обрабатываются идущими в комплекте утилитами. Отрабатывает за приемлемое
время, даёт лучшие результаты, чем оптимизатор из Google Page Speed и smush.it.
Комментарии и предложения очень приветствуются.
Комментарии RSS по email OK
а gif совсем умер? Нельзя ли при нахождении gif конвертировать в png? На чем основан алгоритм сжатия?
У Чикуёнка почитайте про оптимизацию png изображений - там у него пара ссылок есть на программки из коммандной строки (в тючю и пакетная обработка) + Пепелсбей в своё время много про это писал.
Porcelanosa, gif — да, фактически умер. В нём только анимация жива осталась. Конвертировать можно, но это небезопасно т.к. нужно будет ещё переписать все ссылки на эти изображения в CSS/HTML. Если картинки автоматом сконвертятся — можно забыть.
Всё сжатие без потерь. Для JPEG производится оптимизация таблиц Хаффмана + выкидывается всё ненужное: exif, цветовые профили и т.д. Для PNG опять же выкидывается ненужная информация. Затем, если цветов меньше 256, пробуем конвертировать PNG24 в PNG8, все лишние цвета выкидываем. Ну и после пережимаем получившиеся данные более оптимальным алгоритмом deflate.
stewardtz, у Сергея Чикуёнка очень хорошие статьи про ручной подгон изображения под оптимизацию, но, к сожалению, времени на такую ручную обработку частенько нет.
С твитера ссылку поправь, после точки 0 съело) За оптимизатор спасибо!
Вот тоже хорошая штука, но работает только на макоси: ImageOptim — может быть можно её как-нибудь запустить под Windows в командной строке?
Рекомендую посмотреть в сторону: http://github.com/banzalik/imgcomp — почти серебряная пуля, подхватывает множество форматов и с обработкой по шаблонам все ок. Под виндой правда не завести.
pepelsbey, сомневаюсь, что это реально.
Чистяков Денис, я под виндой, как и многие-многие разработчики. imgcomp интересный. Работает быстро?
Как раз видел в недавнем коммите в yii изменения картинок. На части маленьких картинах размер не убавился, а наоборот вырос (это крохи байтов: 120 -> 144 bytes). Но может сделать проверку: если после преобразования размер вырос, то оставлять оригинал? Это было бы идеологически правильней, ведь мы делаем преобразования для уменьшения размеров.
И кстати, он старые файлы оставляет, мало ли что.
Sam, вообще на сколько я понимаю у твоего решения и imgcomp много общего он так же использует существущие решения и подбирает нужное в зависимости от типа файла, понравились гибкость, подробная информация о ходе оптимизации и о том что было именно применено и большое колличество режимов.
Используемые библиотеки: imagemagick, pngout, optipng, pngrewrite, exiftool, advpng, jpegtran, gifsicle, pngnq.
Чистяков Денис, ну да, принцип тот же: запустить кучу тулз последовательно для разных файлов. imgcomp, конечно, более взрослый.
Набор утилит немного разный: у меня не используется exiftool, imagemagick, advpng (оттуда только deflate используется в виде advdef), pngout (не быстро и разница не критичная), pngnq (т.к. автоматически это делать — зло), gifsicle (опять же автоматом опасно, иногда анимацию портит).
посмотрл, занятно.
сам, кстати, на линухе сижу, так что... )))
посмотрел на imgcomp... (вдруг там что-нить ещё найду?)
у меня в общем-то то же самое выполняется собственным чуть перепиленым скриптом. разве что ещё иногда наложение водяных знаком им же устраиваю.
... всё-таки, скриптовые решения - самые гибкие получаются )))
Круто, не думал что ты так агрессивно жмешь эти картинки. Хорошое решение.
http://punypng.com/ А как по сравнению с твоей этот сервис? Они очень даже хорошо жмут, свой алгоритм у них. Пока лучшего не видел.
Psih, PNG мой наборчик жмёт чуть лучше, в отличие от JPEG. Интересно, что они с ним делают… jpegtran вроде вырезает всё, что можно вырезать без потерь. Плюс на одной PNG-шке из моего тестового набора punypng споткнулся.
Sam
Насколько я читал, они делают анализ изображения и оптимизируют его кодирование. В общем какие-то свои наработки у них. Но жмёт хорошо.
Попробую твоё, посмотрим что будет :)
Sam, а может добавить многопоточность ?)) Я делал её через start...
Ekstazi, если покажешь как — буду признателен.
@Чистяков Денис А imgcomp под cygwin - не пробовали завести?
@dva нет, не было необходимости, т.к. уже почти 2-а года работаю в убунте )
Ох, реализовать не смогу, не хватит времени, подсказать могу только, ниже исходники многопоточного пингера подсети:
Думаю идея ясна, можно совместить все в одном батнике при этом вызывая из него определенную процедуру для сжатия с переданным параметром - именем файла, а когда вспомогательный параметр не передан, то проходится по всем файлам в каталоге и вызывать самого себя для оптимизации. Как-то так.
скажите плз, как это сделать?
mantra,
спс
Коль уж в этом треде есть живые пользователи imgcomp, то я с удовольствием выслушаю ваши пожелания, багрепорты и фичреквесты
banzalik, его под cygwin можно пустить?