Лучший формат для сжатия изображений без потерь в C#

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

Я знаю, что PNG без потерь, но его сжатие не подходит для изображений в стиле фотографий.

Я понимаю, что есть формат Jpeg без потерь, но реализовано ли это на C#?

Есть ли другие варианты, о которых я не знаю?


person Sugrue    schedule 06.09.2012    source источник


Ответы (1)


Вот некоторые коэффициенты сжатия для различных видов кодирования без потерь (источник, чем выше, тем лучше):

        JPEG 2000R  JPEG-LS L-JPEG  PNG 
bike    1.77        1.84    1.61    1.66
cafe    1.49        1.57    1.36    1.44
cmpnd1  3.77        6.44    3.23    6.02
chart   2.60        2.82    2.00    2.41
aerial2 1.47        1.51    1.43    1.48
target  3.76        3.66    2.59    8.70
us      2.63        3.04    2.41    2.94
average 2.50        2.98    2.09    3.52

Как видите, JPEG без потерь сжимает не намного лучше, чем PNG, а поскольку PNG поддерживается намного лучше, я бы порекомендовал вам просто использовать PNG.

person Sjoerd    schedule 06.09.2012
comment
TIFF имеет довольно плохой коэффициент сжатия (сравнение). Webp имеет лучшую степень сжатия (сравнение), но менее широко поддерживается, чем PNG, но поддерживается лучше, чем JPEG без потерь. - person Sjoerd; 06.09.2012
comment
+1 Имейте в виду, что коэффициент сжатия PNG (и скорость) зависит от двух факторов: уровня сжатия алгоритма zlib и стратегии фильтрации строк PNG (прогнозирование). - person leonbloy; 06.09.2012