Pngcrush - Pngcrush
pngcrush 1.5.10 | |
Разработчики) | Гленн Рандерс-Пехрсон |
---|---|
Стабильный выпуск | |
Репозиторий | |
Написано в | C |
Операционная система | Кроссплатформенность |
Тип | Оптимизатор изображения |
Лицензия | Похожий на Лицензия libpng |
Интернет сайт | pmt |
pngcrush это свободный и Открытый исходный код командная строка утилита для оптимизации PNG файлы изображений. Уменьшает размер файла без потерь - то есть получившееся "раздавленное" изображение будет иметь то же качество, что и исходное изображение.
Основная цель pngcrush - уменьшить размер PNG. Поток данных IDAT пробуя различные комбинации методов сжатия и дельта-фильтров. Его также можно использовать для различных манипуляций с изображениями PNG, таких как изменение битовая глубина, удаление нежелательных вспомогательные части или добавление определенных фрагментов, включая gAMA, tRNS, iCCP и текстовые фрагменты.
Основная операция
В основном pngcrush используется для уменьшения размера данных изображения, содержащихся в разделе IDAT.
Данные пикселей в файле PNG сжимаются с использованием LZ77 алгоритм (который пытается найти повторяющиеся последовательности байтов в исходных данных), а затем сжимается с помощью Алгоритм Хаффмана. Эта комбинация называется ВЫПУСКАТЬ сжатие. Перед сжатием к пиксельным данным применяются неразрушающие дельта-фильтры.
Существует пять возможных типов фильтров, которые можно указать отдельно для каждой строки развертки, и несколько возможных стратегий поиска совпадений LZ77. Таким образом, существует очень большое количество различных комбинаций способов сжатия изображения. Какая комбинация дает наилучшее сжатие, будет зависеть от свойств отдельного изображения.[3]
pngcrush сжимает изображение с несколькими различными комбинациями, а затем сохраняет наименьший из полученных файлов.[4] Поскольку невозможно перебрать все комбинации, pngcrush использует эвристику для выбора методов, которые следует попробовать.
В простейшей форме pngcrush можно указать, чтобы он сгенерировал "измельченный" файл из неоптимизированного, используя следующий формат в командной строке:
pngcrush imageIn.png imageOut.png
По умолчанию pngcrush использует несколько распространенных методов для уничтожения файла. Необязательный аргумент "-brute" может использоваться для грубая сила crushing, который будет использовать 176 различных методов дробления в версиях 1.8.12 и новее или 148 методов дробления в версиях с 1.7.45 по 1.8.11.
Уменьшение размера файла за счет удаления данных цветокоррекции
Одна из возможностей pngcrush - возможность удалить все данные цветокоррекции (гамма, баланс белого, Цветовой профиль ICC, стандарт RGB цветовой профиль) из файлов PNG, используя следующие параметры командной строки:[5]
pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB InputFile.png OutputFile.png
Поскольку большинство графических программ встраивают дополнительные данные цветокоррекции, которые обычно не нужны[согласно кому? ]его удаление может привести к уменьшению размера файла до 40% по сравнению с исходным. pngcrush также без потерь уменьшает битовую глубину изображений или применяет цветовая палитра по возможности, если это приведет к уменьшению размера файла.
Все вспомогательные фрагменты и фрагменты текста можно удалить с помощью следующих параметров:
pngcrush -rem alla -rem текст InputFile.png OutputFile.png
Обработка изображений
pngcrush можно использовать для изменения кодировки цвета изображения. Например, если изображение содержит 10 цветов, но имеет цветовую палитру из 256 элементов (8 бит), pngcrush можно использовать для уменьшения цветовой палитры до 4-битной и усечения палитры до 10 элементов:
pngcrush -bit_depth 4 -plte_len 10 image1.png image2.png
pngcrush также может изменять тип цвета изображения. Для полноцветного изображения изменение типа цвета с 2 на 0 (-c 0
) преобразует его в оттенки серого. Изображения в градациях серого обычно меньше, чем изображения в истинном цвете, потому что, помимо необязательного альфа-канал, на пиксель используется только один 8-битный канал, а не три. Изображения в градациях серого также обычно меньше изображений с палитрой, потому что им не нужно определять цветовая палитра. Для изображения truecolor-alpha изменение типа цвета с 6 на 2 удаляет альфа-канал.
Обработка фрагментов и метаданных
Изображения PNG содержат фрагменты с информацией об изображении, такой как его разрешение (фрагмент Phys), время последнего изменения (фрагмент TIME) и текстовые метаданные (фрагмент текста и его варианты). С помощью pngcrush пользователь может редактировать или удалять эти вспомогательные блоки:
pngcrush -res 96 -rem time -text b «Программное обеспечение» «pngcrush» image1.png image2.png
Приведенная выше команда устанавливает разрешение изображения 96. dpi, удаляет метку времени и записывает фрагмент текстовых метаданных, описывающий pngcrush как программу для создания изображения.
Смотрите также
Рекомендации
- ^ "pngcrush журнал изменений". Получено 27 июля 2018 - через SourceForge.
- ^ «Инструменты PNG и MNG - просмотрите /pngcrush/1.8.13 на SourceForge.net». 29 августа 2017 г.. Получено 27 июля 2018 - через SourceForge.
- ^ Космин Трута (10 мая 2008 г.). «Руководство по оптимизации PNG». Получено 31 июля 2010.
- ^ Уидон, Дэвид. "человек pngcrush". Получено 31 июля 2010.
- ^ Сивонен, Анри (21 апреля 2003 г.). Коррекция "Печальная история гаммы PNG""". Получено 8 сентября 2017.
дальнейшее чтение
- Содерс, Стив (2009). Еще более быстрые веб-сайты: важные знания для фронтенд-инженеров. O'Reilly Media. п. 142. ISBN 0-596-52230-4.
- Сайуд, Халид (2003). Справочник по сжатию без потерь. Академическая пресса. С. 386–388. ISBN 0-12-620861-1.
внешняя ссылка
- Официальный веб-сайт
- pngutils для консоли Win32
- PNG вилка с оптимизированным zlib с помощью SSE2 + инструкция, развитый к CloudFlare