Домашняя » как » Является ли формат PNG без потерь, так как он имеет параметр сжатия?

    Является ли формат PNG без потерь, так как он имеет параметр сжатия?

    Предполагается, что формат PNG является форматом без потерь, но когда вы сохраняете изображение в виде файла PNG, вас попросят выбрать уровень сжатия. Значит ли это, что формат PNG на самом деле не без потерь? Сегодняшний пост SuperUser Q & A помогает прояснить путаницу для любопытного читателя.

    Сегодняшняя сессия вопросов и ответов пришла к нам благодаря SuperUser - подразделению Stack Exchange, группе веб-сайтов вопросов и ответов, управляемой сообществом..

    Вопрос

    SuperUser reader pkout хочет знать, зависит ли качество изображения PNG от выбранного уровня сжатия:

    Насколько я понимаю, PNG файлы используют сжатие без потерь. Однако, когда я использую редактор изображений, такой как Gimp, и пытаюсь сохранить изображение в виде файла PNG, он запрашивает уровень сжатия в диапазоне от 0 до 9.

    Если у него есть параметр сжатия, который влияет на визуальную точность сжатого изображения, как тогда PNG без потерь? Может кто-нибудь, пожалуйста, объясните мне это? Я получаю поведение без потерь только когда я устанавливаю уровень сжатия на 9?

    Есть ли разница в качестве изображения в зависимости от выбранного вами уровня сжатия??

    Ответ

    Авторы SuperUser LordNeckbeard и Jjlin ответят за нас. Прежде всего, лорд Нэкборд:

    PNG сжат, но без потерь

    Уровень сжатия - это компромисс между размером файла и скоростью кодирования / декодирования. Чтобы чрезмерно обобщить, даже форматы без изображения, такие как FLAC, имеют сходные понятия.

    Различные уровни сжатия, одинаковый декодированный вывод

    Хотя размеры файлов различаются из-за разных уровней сжатия, фактический декодированный вывод будет идентичен. Вы можете сравнить MD5 хэши декодированных выходов с ffmpeg, используя MD5 muxer. Это лучше всего показать на некоторых примерах.

    Создать PNG файлы

    • По умолчанию ffmpeg будет использовать -compression_level 100 для вывода PNG.
    • Быстрый неаккуратный тест показал, что 100 (самый высокий уровень сжатия) в этом примере занимал примерно в три раза больше времени и в пять раз больше, чем 0 (самый низкий уровень сжатия).

    Сравнить размер файла

    Расшифруйте файлы PNG и покажите хеши MD5

    Поскольку оба хэша одинаковы, вы можете быть уверены, что декодированные выходные данные (несжатые необработанные файлы) абсолютно одинаковы.

    Далее следует ответ от jjlin:

    PNG без потерь. В данном случае GIMP, скорее всего, не использует лучший выбор формулировок..

    Думайте об этом как качество сжатия или же уровень сжатия. При более низком сжатии вы получаете файл большего размера, но для его создания требуется меньше времени, тогда как при более высоком сжатии вы получаете файл меньшего размера, для создания которого требуется больше времени..

    Как правило, вы получаете убывающую отдачу, т. Е. Не такое значительное уменьшение размера по сравнению с увеличением времени, которое требуется при поднятии до самых высоких уровней сжатия, но это зависит от вас..


    Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.