Adobe Photoshop CC 2014 (Save For Web) — 59,78 КБ | kraken.io — 54,90 КБ | Image Catalyst (Xtreme) — 51,39 КБ |
Image Catalyst имеет два существенных преимущества по сравнению с другими приложениями по оптимизации изображений:
- Комплексный подход оптимизации изображений. Для этого были разработаны специальные алгоритмы оптимизации, которые позволят получить высокую степень сжатия, при этом сохраняя достаточно высокую скорость оптимизации.
- Параллельная оптимизация изображений. По умолчанию, Image Catalyst использует несколько потоков для оптимизации, что позволяет увеличить скорость оптимизации изображений в 2 и более раз.
Таблица сравнения Image Catalyst и ScriptPNG (для теста использовались 2000 файлов формата PNG).
ImageCatalyst 2.5 | ScriptPNG 02/04/2015 | |||
Advanced | Xtreme | Fast | Intense | High |
77 918 КБ | 76 619 КБ | 78 768 КБ | 77 884 КБ | 77 685 КБ |
18:34 | 106:39 | 20:17 | 49:13 | 61:05 |
Параметры оптимизации PNG
Advanced | Xtreme |
Размер — 55,57 КБ Время оптимизации — 1,5 с |
Размер — 54,65 КБ Время оптимизации — 7,5 с |
Использует базовый набор инструментов (TruePNG + AdvDef) для оптимизации изображений формата PNG. Степень сжатия в среднем на 10% выше по сравнению с Adobe Photoshop (Save for Web) | Использует продвинутый набор инструментов (TruePNG + PNGWolfZopfli) для оптимизации изображений формата PNG. Степень сжатия в среднем на 2% выше по сравнению с режимом оптимизации Advanced, но скорость сжатия ниже 5 раз |
Параметры оптимизации JPEG
Baseline | Progressive |
Представляет последовательное (линейное) отображение изображения по мере поступления данных при загрузке. | Представляет поочередно все более детализированные версии целого изображения по мере поступления данных при загрузке. |
Параметры оптимизации GIF
Поддержка командной строки
iCatalyst.bat [options] [add folders \ add files]
Options:
/png:# Optimization settings PNG:
1 - Compression level - Xtreme;
2 - Compression level - Advanced;
0 - Skip PNG optimization.
/jpg:# Optimization settings JPEG:
1 - Encoding Process - Baseline;
2 - Encoding Process - Progressive;
3 - Optimization settings default;
0 - Skip JPEG optimization.
/gif:# Optimization settings GIF:
1 - Optimization settings default:
0 - Skip GIF optimization.
"/outdir:#" Settings save optimized images:
true - replace the original image on optimized;
false - open dialog box for saving images;
"full path to folder - specify the folder to save images.
For example: "/outdir:C:\temp", if the destination folder does not exist, it will be created automatically.
Add folders \ Add files:
- Specify the full path to the images and / or folders with images. For example: "C:\Images" "C:\Photos" "C:\logo.png"
- In the full image paths should not be characters. For example: "&", "%", "(", ")" etc.
- The application automatically optimizes images in nested subfolders.
Поддержка Drag and Drop
- Перенесите изображения и\или папки с изображениями на значок «iCatalyst.bat».
- В полных путях изображений не должны быть символы. Например: "&", "%", "(", ")", "!" и т.д.
- Приложение автоматически оптимизирует изображения во вложенных подпапках.
Загрузить Image Catalyst 2.5 (только для Windows, cmd) — https://github.com/lorents17/iCatalyst
Авторы — Lorents & Res2001
Благодарности:
- благодарим авторов приложений, которые используются в проекте;
- благодарим участников форумов encode.ru, forum.ru-board.com, forum.script-coding.com, forum.vingrad.ru и cyberforum.ru за вклад в развитие проекта;
- отделанная благодарность X128 за огромный вклад в развитие проекта.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (45)
Evgeny42
28.05.2015 20:55+1Понимаю что работает по другому. Но какой смысл сжимать png на пару килобайт, когда какой-нибудь tine PNG может сделать это в разы лучше.
16КБ
Упс, кажись не успел.
sourcerer
28.05.2015 21:47Не очень понял, как вы насчитали килобайты для картинок из заголовка. Я скачал их, и получил вот что:
/tmp/test_data$ ls -l -S -rw-rw-r-- 1 sourcerer sourcerer 60030 мая 28 21:42 test_ps.png -rw-rw-r-- 1 sourcerer sourcerer 59993 мая 28 21:42 test_kraken.png -rw-rw-r-- 1 sourcerer sourcerer 57410 мая 28 21:42 test_catalyst.png
/tmp/test_data$ pngcrush --brute test_ps.png test_pngcrush.png $ ls -l test_pngcrush.png -rw-rw-r-- 1 sourcerer sourcerer 58564 мая 28 21:45 test_pngcrush.png /tmp/test_data$ pngcrush -brute test_kraken.png test_pngcrush.png $ ls -l test_pngcrush.png -rw-rw-r-- 1 sourcerer sourcerer 58564 мая 28 21:45 test_pngcrush.png /tmp/test_data$ pngcrush -brute test_catalyst.png test_pngcrush.png /tmp/test_data$ ls -l test_pngcrush.png -rw-rw-r-- 1 sourcerer sourcerer 55795 мая 28 21:46 test_pngcrush.png
Отсюда следует, что у вас
а) возможно, какие-то «не те» картинки в шапке
б) возможно, картинка после обработки в Catalyst теряет часть информации
в) возможно, Catalyst сжимает не оптимально — pngcrush смог сжать ещё лучшеLorents Автор
28.05.2015 22:06+1В шапке действительно не те картинки, не знаю почему habrastorage.org изменил картинки.
pngcrush не мог сжать лучше, pngcrush использует zlib, а я zopfli.Boomburum
29.05.2015 00:56+1Habrastorage действительно перезаливает картинки из статьи (если они на внешнем сайте лежат, например), сжимает или нет при этом — не знаю. Так что как вариант — сделайте кликабельные ссылки на изображения на стороннем сайте (или в архив залейте куда-нибудь).
Aingis
29.05.2015 13:35> pngcrush не мог сжать лучше, pngcrush использует zlib, а я zopfli.
zopfli — ещё не означает лучшего сжатия. Есть варианты, когда он сжимает хуже, например, 7-zip. Вот пример такого случая в статье:
mainroach.blogspot.ru/2013/08/boosting-text-compression-with-dense.htmlLorents Автор
29.05.2015 14:45Не совсем так. На оптимизацию png влияют несколько моменмтов. В частности фильтр оптимизации и алгоритм сжатия deflate.
Алгоритм deflate имеет несколько реализация:
Zlib
7-zip
Kzip
zopfli
И каждая имеет свои достоинства и недостатки.
Rumlin
28.05.2015 22:03Была такая программа:
JPG Cleaner for DOS, Win32 Console and Win32
Copyright © 2000-2002 Rainbow Software
В большинстве случаев очень сильно уменьшала размеры jpg файлов. Удаляла EXIF и другую дополнительную информацию. При разрешении файлов в то время в пределах 640x480, 800x600 дополнительная информация могла занимать десятки килобайт, что могло быть половиной от размера файла с изображением низкого разрешения.
jaguard
28.05.2015 22:06На фоне того, что сжатие с потерями не доступно, пресловутые преимущества вообще не вызывают интереса.
Сам использую truePNG, нравится что можно задать конкретное количество цветов квантизации и уровень дизеринга, хотя от какого-нибудь интеллекта в программе не отказался бы (чтобы подбирала оптимальное количество дизеринга и цветов — размер небольшой и без заметных искажений).
kentastik
29.05.2015 08:15
16.36 KB — compressor.ioLorents Автор
29.05.2015 08:1914.96 KB — kraken.io
Ryotsuke
29.05.2015 16:06Что удивительно у kraken размер меньше, а потерь в градиентах меньше, но тоже заметны
FishDude
30.05.2015 00:46Если уж вы начали сравнивать с 256-цветными картинками, взгляните и на это:
Color Quantizer авторства x128 с его собственным алгоритмом квантования, 15.41 Кб.
Здесь огрехи распределены в основном по границам областей, а не по плавным переходам.FishDude
30.05.2015 01:06Картинка не приложилась, ссылка тоже; наверное, грехи кармы их покарали. А вот-с:
dl.dropboxusercontent.com/u/13729396/pic/habr-post-215213-1.png
И вот другой достойный вариант, патентованный алгоритм Optpix из далекого 2001 года + дожато CQ, 13.7 Кб:
dl.dropboxusercontent.com/u/13729396/pic/habr-post-215213-2.png
Это два лучших алгоритма кватнизаторов — x128 и японский Optpix, из известных мне на сегодняшний день.
«Вы все еще жмёте „Кракенами“? Тогда мы идем к вам!»Lorents Автор
30.05.2015 09:12Вы не могли бы чуть поподробнее рассказать про Optpix, и где ее можно скачать?
FishDude
30.05.2015 11:50Конкретно вот это сделано в древнем «OPTPiX iMageStudio». Назначение программы — геймдев, работа со спрайтами.
Можно скачать триал продуктов у них на сайте, ближайший современный аналог называется «OPTPiX Imesta». И, кстати, цены на софт у них космические.
Технически, ценен для меня в их программах только квантизатор — собственно «оптимизировать» они не умеют. Мне пришлось взять оригинал картинки, сжать его чем-то оптимизирующим в png (собственно, ради предварительной обработки, чтобы удалились невидимые под альфа-каналом области), потом с помощью imagestudio уменьшить количество цветов, а затем дожать современным оптимизатором png.
kiltum
29.05.2015 10:13Пользуясь случаем: а посоветуйте аналогичное, но для pdf'ок?
x128
29.05.2015 11:00+2Есть универсальный оптимизатор FileOptimizer, он многое умеет оптимизировать, в том числе и pdf.
SamDark
29.05.2015 12:32+1Отличный проект. Держите github.com/lorents17/iCatalyst/pull/2 и github.com/lorents17/iCatalyst/pull/1.
Nomad1
29.05.2015 14:03+1Очень не хватает совместимости с другими ОС. Хотя бы .bat файл подровняйте, чтобы была совместимость c wine, а лучше ведите одновременно .bat и .py, ведь сами .exe утилиты отлично работают и под wineconsole.
P.S. В копилку меряния любимыми методами сжатия. Квантизация и понижение до 256 цветов мне не всегда подходят, потому использую Lossy алгоритм для PNG. Вот один из примеров с 32-битным цветом и PSNR 54.1568 против 41.7669 у квантизаторов, размер 48.56 KB.
FishDude
29.05.2015 18:19Есть простой вариант компромиссного «lossy» — попытаться уменьшить количество цвето не до 256, а скажем до 512.
Nomad1
29.05.2015 18:53В первую очередь, всякие там pngquant так не позволяют, потому как заточены под 256 цветов. Я встречал (да, каюсь, и сам писал) утилиту, которая позволяет уменьшать палитру до произвольного значения, например, 4096 цветов, но там было далеко не все хорошо с Dithering-ом, точнее квантизацией. Популярные алгоритмы dithering заточены под уменьшение битности цвета, например RGB 888 -> 565, а в случае с палитрами у нас как раз точность цвета не падает — хранится полноценная RGBA 8888 палитра. Но тут наступает еще и другая проблема: допустим мы используем палитру из 512 цветов, такой тип картинки контейнером PNG не поддерживается, потому придется хранить таки изображение как и раньше в RGBA 8888, т.е. выделять 32 бита на пиксель, а не 8, как в 256-цветном режиме с палитрой. Но уже из-за dithering у нас увеличится сложность картинки и будет размер даже больше, чем изначально. Если же не использовать dithering в принципе, то будет уж очень-очень lossy качество.
Отдельно можно рассмотреть собственный формат файла, где будет выделяться, допустим, 9 бит на пиксель (для палитры 512). Если в случае 8-бит на пиксель у нас последовательность из 7 пикселей одного цвета с индексом 1 будет выглядеть как набор из 7 байтов с кодом 1 (01 01 01 01 01 01 01), то для 9-битного режима это будет уже 8 байт (01 02 04 08 20 40 80 00). Архивировать вторую последовательность уже заметно сложнее. Логично предположить, что на пиксель удобнее всего выделять число, кратное 8, т.е. 8 или 16 бит. В случае с 16-битными индексами мы можем хранить палитру до 65536 цветов, изображение будет относительно хорошо архивироваться, только занимать будет чуть больше, чем хорошо пожатый изначальный PNG :) Это не говоря уже о том, что это будет свой формат, который надо на лету декодировать.FishDude
29.05.2015 21:03Полностью согласен, это далеко не панацея, но довольно часто встречающийся частный случай.
Скверно работает на чистом синтетиском оригинале, но неплохо справляется с зашумленными картинками.
И, да, dithering категорически противопоказан.
Lorents Автор
29.05.2015 21:11По поводу wine постараться сделать в следующей версии. К сожалению я не владею Python.
Fesor
TinyJPG.org — 15Kb
1514m
У Вас сжато с потерями.
Fesor
Я это понимаю.
AxisPod
Невооруженным взглядом вы видите эти потери?
andrewiWD
Да! Особенно ярко я их видил, когда пытался ужать сборку флагов стран.
Ryotsuke
Я вижу. Тень особенно ужасна, но видно на всех градиентах
Lorents Автор
Image Catalyst оптимизирует без потерь.