Сжатие PNG в .net - PullRequest
       53

Сжатие PNG в .net

3 голосов
/ 03 августа 2011

Я хочу сжать растровые изображения в PNG с разными уровнями сжатия, поскольку эти уровни доступны в формате JPEG сжатия в C #.У меня есть от 20 до 30 изображений разных размеров для обработки за 1 сек.Есть ли библиотека для достижения этого сжатия в PNG с различными уровнями сжатия?

Ответы [ 2 ]

6 голосов
/ 26 декабря 2011

Метод сжатия без потерь не должен быть одного уровня качества.Я имею в виду, что некоторые методы сжатия без потерь имеют некоторые параметры для выбора компромисса между скоростью и коэффициентом сжатия.Это зависит от автора.

Что касается сжатия PNG, на самом деле это набор фильтров и алгоритм дефляции.Учитывая, что deflate имеет избыточную ступень кодирования (например, два разных компрессора могут выдавать совершенно разные выходные данные, но все же они могут быть распакованы любым допустимым декомпрессором), неудивительно, что несколько программ выводят разные PNG.Обратите внимание, что я все еще не принимаю во внимание фильтры.Существует несколько фильтров, и «лучшего» фильтра нет, т. Е. Его качество зависит от изображения.

Из-за его избыточности некоторые люди пишут оптимизаторы PNG, которые принимают обычный PNG в качестве входного для создания меньшего PNG без какого-либо восприятияпотеря.Некоторые из них применяют некоторые приемы, такие как заполнение полностью прозрачной области некоторыми предсказуемыми цветами, чтобы увеличить сжатие.Но, как правило, они настраивают параметры грубо.

Теперь, самый простой ответ на ваш вопрос может быть, что у вас есть два варианта:

  1. Если вы собираетесьЗапустите свой исполняемый файл в среде рабочего стола, вы можете использовать один из этих инструментов в качестве оптимизатора.Но в виртуальном хостинге вы не можете использовать их из-за возможных привилегий.
  2. Вы можете написать свою собственную программу записи PNG в .NET, которая учитывает некоторую настройку параметров грубой силы.
0 голосов
/ 09 сентября 2011

Согласно этому ответу C #: Поиск алгоритма / библиотеки сжатия PNG PNG в C # - это библиотека сжатия без потерь, например, не поддерживает несколько уровней качества.

Страница вики на PNG (http://en.wikipedia.org/wiki/Portable_Network_Graphics), кажется, подтверждает, что формат сжатия без потерь (например, имеет только один уровень сжатия)

Некоторые специалисты по поиску в Google предполагают, что существуют исследования версий PNG с потерями

...