PNGCrush
Разработчик(и) | Гленн Рандерс-Персон |
---|---|
Стабильная версия | |
Репозиторий | |
Написано в | С |
Операционная система | Кросс-платформенный |
Тип | Оптимизатор изображений |
Лицензия | Похоже на: Лицензия libpng |
Веб-сайт | вечернее время |
pngcrush — бесплатная с открытым исходным кодом утилита командной строки для оптимизации файлов изображений PNG . Он уменьшает размер файла без потерь – то есть полученное «раздавленное» изображение будет иметь то же качество, что и исходное изображение.
Основная цель pngcrush — уменьшить размер потока данных PNG IDAT , пробуя различные комбинации методов сжатия и дельта-фильтров. Его также можно использовать для различных манипуляций с изображениями PNG, таких как изменение разрядности , удаление ненужных вспомогательных фрагментов или добавление определенных фрагментов, включая gAMA, tRNS, iCCP и текстовые фрагменты.
Основная операция
[ редактировать ]Основное использование pngcrush — уменьшение размера данных изображения, содержащихся в разделе IDAT.
Пиксельные данные в файле PNG сжимаются с помощью алгоритма LZ77 (который пытается найти повторяющиеся последовательности байтов в исходных данных), а затем дополнительно сжимаются с помощью алгоритма Хаффмана . Эта комбинация называется сжатием дефляции . Перед сжатием к данным пикселей применяются неразрушающие дельта-фильтры.
Существует пять возможных типов фильтров, которые можно указать отдельно для каждой строки сканирования, и несколько возможных стратегий поиска совпадений LZ77. Таким образом, существует очень большое количество различных комбинаций того, как можно сжать изображение. Какая комбинация дает наилучшее сжатие, будет зависеть от свойств отдельного изображения. [3]
pngcrush сжимает изображение с помощью нескольких различных комбинаций, а затем сохраняет наименьший из полученных файлов. [4] Поскольку невозможно просмотреть все комбинации, pngcrush использует эвристику для выбора методов, которые следует попробовать.
По умолчанию pngcrush использует всего несколько распространенных методов для уничтожения файла. Необязательный аргумент «-brute» можно использовать для грубого дробления, при котором будут пробовать 176 различных методов дробления в версии 1.8.12 и более поздних или 148 методов дробления в версиях с 1.7.45 по 1.8.11.
Уменьшение размера файла за счет удаления данных цветокоррекции
[ редактировать ]Одной из особенностей pngcrush является возможность удалять все данные цветокоррекции ( гамма , баланс белого , цветовой профиль ICC , стандартный RGB ) из файлов PNG. цветовой профиль [5]
Поскольку большинство графических программ содержат дополнительные данные цветокоррекции, которые обычно не нужны. [ по мнению кого? ] , его удаление может привести к тому, что размер файла будет на 40 % меньше исходного. pngcrush, если это указано, также без потерь уменьшит разрядность изображений или применит цветовую палитру , если это возможно, если это приведет к меньшему размеру файла. Все вспомогательные фрагменты и текстовые фрагменты можно удалить.
Манипулирование изображениями
[ редактировать ]pngcrush можно использовать для изменения цветовой кодировки изображения. Например, если изображение содержит 10 цветов, но имеет цветовую палитру из 256 записей (8-бит), pngcrush можно использовать для уменьшения цветовой палитры до 4-битной и усечения палитры до 10 записей.
pngcrush также может изменить цветовой тип изображения. Для полноцветного изображения изменение типа цвета с 2 на 0 преобразует его в оттенки серого. Изображения в оттенках серого обычно меньше, чем полноцветные изображения, поскольку в дополнение к дополнительному альфа-каналу на пиксель используется только один 8-битный канал, а не три. Изображения в оттенках серого обычно меньше изображений с палитрой, поскольку для них не требуется определять цветовую палитру . Для изображения истинного цвета с альфа-каналом изменение типа цвета с 6 на 2 удаляет альфа-канал.
Манипулирование фрагментами и метаданными
[ редактировать ]Изображения PNG содержат фрагменты с информацией об изображении, такой как его разрешение (физический фрагмент), время последнего изменения (блок tIME) и текстовые метаданные (текстовый фрагмент и его варианты). С помощью 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). Еще более быстрые веб-сайты: необходимые знания для фронтенд-инженеров . О'Рейли Медиа. п. 142. ИСБН 0-596-52230-4 .
- Саюд, Халид (2003). Справочник по сжатию без потерь . Академическая пресса. стр. 386–388. ISBN 0-12-620861-1 .
Внешние ссылки
[ редактировать ]- Официальный сайт
- pngutils для консоли Win32
- Форк pngcrush оптимизированным zlib с использованием инструкций SSE2 +, разработанный CloudFlare с