Science Blog





Original article:http://pmt.sourceforge.net/pngcrush/

Pngcrush

[СКАЧАТЬ] [�?СТОР�?Я �?ЗМЕНЕН�?Й]

Pngcrush - это оптимизатор для PNG (Portable Network Graphics) файлов. Он может быть запущен из командной строки в окне MS-DOS или из командной строки UNIX или LINUX.

Его основной целью является уменьшение размера потока данных PNG IDAT, пробуя различные уровни сжатия и методы фильтра PNG. Она также может быть использована для удаления нежелательных вспомогательных блоков или добавления определенных кусков, включая gAMA, tRNS, iCCP и текстовых кусков.

Когда Pngcrush статически связан с прилагаемым кодом zlib, подразумевается иммунитет к zlib-1.1.3 "double-free" ошибке, поскольку по умолчанию он обнаруживает и отвергает любые "double-free" попытки. Он просто генерирует сообщение об ошибке "Decompression Error" и отклоняет файл.

Pngcrush имеет открытый исходный код и может использоваться, изменяться и перераспределяется кем-либо без уплаты гонорара. Лицензии, встроенные в файле pngcrush.c, эквивалентны но не идентичны лицензии libpng найденной в файле libpng png.h.

�?сходный код для Pngcrush находится здесь. Двоичные исполняемые файлы, построенные сторонними добровольцами и не всегда в актуальном состоянии - здесь. Pngcrush использует libpng и zlib, которые оба включены в дистрибутив исходного Pngcrush. Они немного изменены:

  • libpng pngconf.h модифицирован на "#include pngcrush.h", который использует:
    • в "#define out" неиспользуемые части библиотеки
    • #define PNG_SETJMP_NOT_SUPPORTED
    • #define PNG_ABORT()
    • для установки размера буфера IDAT в большем объеме и
  • zlib изменен, чтобы установить макрос TOO_FAR в 32767 в deflate.c

Если вы так предпочитаете, то вы можете скомпилировать только pngcrush.c от исходной поставки Pngcrush и запустить его в стоковом libpng и zlib, которые можно найти на веб-сайте PNG - www.libpng.org/pub/png/. Если вы сделаете это:

  • Элемент iTXt не будет поддерживаться если ваша версия libpng не поддерживает его. Libpng начинает поддерживать по умолчанию элемент iTXt с версии 1.4.0.
  • Pngcrush будет уязвим для различных условий переполнения, которые были зафиксированы в августе 2004 года, если вы используете не пропатченую версию libpng ранее, чем версия 1.2.7/1.0.17.
  • Pngcrush будет уязвим к double-free ошибке zlib-1.1.3 если вы связали pngcrush с zlib-1.1.3 и любой версией libpng 1.0.x, которые не имеют включенной PNG_USER_MEM_SUPPORTED.
  • TOO_FAR будет 4096 вместо 32767 в deflate.c,
    который приведет к немного более крупным файлам и немного более быстрому выполнению.
  • Также, вы не сможете прочитать PNG файлы с ошибками "Too many IDAT's".

Заранее скомпилированные сборки для Windows (работает в MS-DOS окне, построенном под DJGPP) и RISCOS платформ (все может быть out-of-date) - здесь.

Существует вилка разработки pngcrush от Cosmin Truta с несколько иным набором функций и пространства поиска. Смотрите http://www.cs.toronto.edu/~cosmin/pngtech/optipng/

Pngcrush это приложение командной строки. Если вы предпочитаете графический интерфейс, некоторые из таких них доступны, в том числе те, которые встраивают pngcrush наряду с другими компрессорами/оптимизаторами командной строки для изображений:

  • ImageOptim for Macs, free, GPLv2 license
  • Trimage for Linux, Windows, Mac, free, MIT license

Apple распространяет измененную версию Pngcrush. �? утверждает, что это реальный pngcrush и не информирует пользователя об изменениях, которые требует лицензия pngcrush. Она создает файлы, которые не соответствуют потоку данных PNG, так как они начинаются с фрагмента CgBI вместо куска IHDR.

Apple-модифицированный pngcrush способен возвращать "iPhone оптимизацию" (кроме неизбежной потери точности в основных цветовых значениях не непрозрачных пикселей). Есть также сторонние приложения, таких как общественный домен, приложение pngdefry с открытым исходным кодом, которое можно найти в сети. Я обязан отметить, что Apple и iPhone являются зарегистрированными товарными знаками компании Apple, Inc.


Автором pngcrush является Glenn Randers-Pehrson, glennrp@users.sf.net


  • Cars World
  • Dreams Interpretations