Adobe Photoshop CC 2014 (Save For Web) — 59,78 КБ kraken.io — 54,90 КБ Image Catalyst (Xtreme) — 51,39 КБ
Image Catalyst — программа для комплексной оптимизации/сжатии изображений форматов PNG, JPEG и GIF без потери качества в рамках того же формата.

Image Catalyst имеет два существенных преимущества по сравнению с другими приложениями по оптимизации изображений:
  1. Комплексный подход оптимизации изображений. Для этого были разработаны специальные алгоритмы оптимизации, которые позволят получить высокую степень сжатия, при этом сохраняя достаточно высокую скорость оптимизации.
  2. Параллельная оптимизация изображений. По умолчанию, 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
image image
Представляет последовательное (линейное) отображение изображения по мере поступления данных при загрузке. Представляет поочередно все более детализированные версии целого изображения по мере поступления данных при загрузке.
Default — использует параметры оптимизации по умолчанию.

Параметры оптимизации 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

image

  • Перенесите изображения и\или папки с изображениями на значок «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 за огромный вклад в развитие проекта.
Планы на будущее:

Проголосовало 192 человека. Воздержалось 84 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (45)


  1. Fesor
    28.05.2015 20:52
    -4

    TinyJPG.org — 15Kb


    1. 1514m
      28.05.2015 21:23

      У Вас сжато с потерями.


      1. Fesor
        28.05.2015 21:24
        -1

        Я это понимаю.


      1. AxisPod
        29.05.2015 08:21
        -1

        Невооруженным взглядом вы видите эти потери?


        1. andrewiWD
          29.05.2015 10:04
          +2

          Да! Особенно ярко я их видил, когда пытался ужать сборку флагов стран.


        1. Ryotsuke
          29.05.2015 16:02
          +1

          Я вижу. Тень особенно ужасна, но видно на всех градиентах


    1. Lorents Автор
      28.05.2015 21:24
      +4

      Image Catalyst оптимизирует без потерь.


  1. Evgeny42
    28.05.2015 20:55
    +1

    Понимаю что работает по другому. Но какой смысл сжимать png на пару килобайт, когда какой-нибудь tine PNG может сделать это в разы лучше.

    image 16КБ

    Упс, кажись не успел.


    1. Lorents Автор
      28.05.2015 21:23

      1. tinePNG жмет с потерями. Вы считаете 256 цветов хватит любому изображению?
      2. можетt оптимизировать tinePNG + Image Catalyst и получите результат еще выше.


      1. Evgeny42
        28.05.2015 21:37
        +1

        1) Не любому но большинству точно.
        2) К сожалению у меня убунту.


  1. 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 смог сжать ещё лучше


    1. Lorents Автор
      28.05.2015 22:06
      +1

      В шапке действительно не те картинки, не знаю почему habrastorage.org изменил картинки.
      pngcrush не мог сжать лучше, pngcrush использует zlib, а я zopfli.


      1. Boomburum
        29.05.2015 00:56
        +1

        Habrastorage действительно перезаливает картинки из статьи (если они на внешнем сайте лежат, например), сжимает или нет при этом — не знаю. Так что как вариант — сделайте кликабельные ссылки на изображения на стороннем сайте (или в архив залейте куда-нибудь).


      1. Aingis
        29.05.2015 13:35

        > pngcrush не мог сжать лучше, pngcrush использует zlib, а я zopfli.

        zopfli — ещё не означает лучшего сжатия. Есть варианты, когда он сжимает хуже, например, 7-zip. Вот пример такого случая в статье:
        mainroach.blogspot.ru/2013/08/boosting-text-compression-with-dense.html


        1. Lorents Автор
          29.05.2015 14:45

          Не совсем так. На оптимизацию png влияют несколько моменмтов. В частности фильтр оптимизации и алгоритм сжатия deflate.

          Алгоритм deflate имеет несколько реализация:
          Zlib
          7-zip
          Kzip
          zopfli
          И каждая имеет свои достоинства и недостатки.


  1. Rumlin
    28.05.2015 22:03

    Была такая программа:

    JPG Cleaner for DOS, Win32 Console and Win32
    Copyright © 2000-2002 Rainbow Software

    В большинстве случаев очень сильно уменьшала размеры jpg файлов. Удаляла EXIF и другую дополнительную информацию. При разрешении файлов в то время в пределах 640x480, 800x600 дополнительная информация могла занимать десятки килобайт, что могло быть половиной от размера файла с изображением низкого разрешения.


    1. bolk
      29.05.2015 08:57

      Больше всего занимал превью, который в JPEG помещал, например, Photoshop. Я тоже когда-то писал такую штуку на PHP в каком-то бородатом году.


      1. Rumlin
        29.05.2015 10:15

        Да, после фотошоп вычищалось больше всего.


  1. Lorents Автор
    28.05.2015 22:05

    del


  1. jaguard
    28.05.2015 22:06

    На фоне того, что сжатие с потерями не доступно, пресловутые преимущества вообще не вызывают интереса.
    Сам использую truePNG, нравится что можно задать конкретное количество цветов квантизации и уровень дизеринга, хотя от какого-нибудь интеллекта в программе не отказался бы (чтобы подбирала оптимальное количество дизеринга и цветов — размер небольшой и без заметных искажений).


  1. pewpew
    28.05.2015 22:35
    -2

    Для PNG пользуюсь PNGOUT


    1. Lorents Автор
      28.05.2015 22:44

      до появления zopfli от google, пользовался PNGOUT для максимального сжатия. Image Catalyst на много сильнее жмет чем PNGOUT, при этом с меньшими временными затратами.


  1. kentastik
    29.05.2015 08:15


    16.36 KB — compressor.io


    1. Lorents Автор
      29.05.2015 08:19

      14.96 KB — kraken.io

      image


      1. Ryotsuke
        29.05.2015 16:06

        Что удивительно у kraken размер меньше, а потерь в градиентах меньше, но тоже заметны


        1. FishDude
          30.05.2015 00:46

          Если уж вы начали сравнивать с 256-цветными картинками, взгляните и на это:
          Color Quantizer авторства x128 с его собственным алгоритмом квантования, 15.41 Кб.
          Здесь огрехи распределены в основном по границам областей, а не по плавным переходам.


          1. 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, из известных мне на сегодняшний день.

            «Вы все еще жмёте „Кракенами“? Тогда мы идем к вам!»


            1. Lorents Автор
              30.05.2015 09:12

              Вы не могли бы чуть поподробнее рассказать про Optpix, и где ее можно скачать?


              1. FishDude
                30.05.2015 11:50

                Конкретно вот это сделано в древнем «OPTPiX iMageStudio». Назначение программы — геймдев, работа со спрайтами.

                Можно скачать триал продуктов у них на сайте, ближайший современный аналог называется «OPTPiX Imesta». И, кстати, цены на софт у них космические.

                Технически, ценен для меня в их программах только квантизатор — собственно «оптимизировать» они не умеют. Мне пришлось взять оригинал картинки, сжать его чем-то оптимизирующим в png (собственно, ради предварительной обработки, чтобы удалились невидимые под альфа-каналом области), потом с помощью imagestudio уменьшить количество цветов, а затем дожать современным оптимизатором png.


  1. kiltum
    29.05.2015 10:13

    Пользуясь случаем: а посоветуйте аналогичное, но для pdf'ок?


    1. bolk
      29.05.2015 10:41

      Abbyy MRC SDK. Бесплатного, увы, не видел.


    1. x128
      29.05.2015 11:00
      +2

      Есть универсальный оптимизатор FileOptimizer, он многое умеет оптимизировать, в том числе и pdf.


  1. SamDark
    29.05.2015 12:32
    +1

    Отличный проект. Держите github.com/lorents17/iCatalyst/pull/2 и github.com/lorents17/iCatalyst/pull/1.


    1. Lorents Автор
      29.05.2015 16:08

      Спасибо! Ни как не могу добавить в проект. Подскажите как сделать?


      1. SamDark
        29.05.2015 16:15

        Там есть кнопочка merge.


        1. Lorents Автор
          29.05.2015 16:37

          Спасибо большое!


  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.


    1. Nomad1
      29.05.2015 14:12

      Habrastorage не согласен :)
      Одним словом тут: runserver.net/temp/tmp.opt.png


    1. FishDude
      29.05.2015 18:19

      Есть простой вариант компромиссного «lossy» — попытаться уменьшить количество цвето не до 256, а скажем до 512.


      1. 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 :) Это не говоря уже о том, что это будет свой формат, который надо на лету декодировать.


        1. FishDude
          29.05.2015 21:03

          Полностью согласен, это далеко не панацея, но довольно часто встречающийся частный случай.
          Скверно работает на чистом синтетиском оригинале, но неплохо справляется с зашумленными картинками.
          И, да, dithering категорически противопоказан.


    1. Lorents Автор
      29.05.2015 21:11

      По поводу wine постараться сделать в следующей версии. К сожалению я не владею Python.


  1. iZevs
    31.05.2015 21:14

    Хорошо бы добавить опцию «не удалять exif» для jpeg.


    1. Lorents Автор
      31.05.2015 21:38

      Можно отключить удаление метаданных

      в файле config.ini
      metadata=true
      заменить на
      metadata=false


  1. 4ikist
    02.06.2015 09:07

    не смотрите на сердечки