Домашня » як » Чи не втрачається формат PNG, оскільки він має параметр стиснення?

    Чи не втрачається формат PNG, оскільки він має параметр стиснення?

    Формат PNG має бути форматом без втрат, але коли ви зберігаєте зображення як файл PNG, вам буде запропоновано вибрати рівень стиснення. Чи означає це, що формат PNG насправді не втрачається без втрат? Сьогоднішня посада SuperUser Q&A допомагає прояснити плутанину для цікавого читача.

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

    Питання

    Pkout читача SuperUser хоче знати, на якість зображення PNG впливає вибраний рівень стиснення:

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

    Якщо у нього є параметр стиснення, який впливає на візуальну точність стисненого зображення, як же PNG не втрачається? Може хтось, будь ласка, поясніть це мені? Чи можу я отримати поведінку без втрат, лише коли я встановлюю рівень стиснення до 9?

    Чи є різниця в якості зображення залежно від вибраного рівня стиснення?

    Відповідь

    Співробітники SuperUser LordNeckbeard та jjlin мають відповідь для нас. Спочатку, LordNeckbeard:

    PNG стисло, але без втрат

    Рівень стиснення є компромісом між розміром файлу та швидкістю кодування / декодування. Для надмірного узагальнення, навіть неформатні формати, такі як FLAC, мають подібні концепції.

    Різні рівні стиснення, той самий декодований вихід

    Хоча розміри файлів відрізняються через різні рівні стиснення, фактичний декодований вихід буде ідентичним. Ви можете порівняти хеши MD5 декодованих виходів з ffmpeg, використовуючи мультиплексор MD5. Найкраще це показують деякі приклади.

    Створити файли PNG

    • За замовчуванням ffmpeg буде використовувати -compression_level 100 для виведення PNG.
    • Швидкий неакуратний тест показав, що 100 (найвищий рівень стиснення) потребувало приблизно трьох разів більше, щоб кодувати і в п'ять разів довше, щоб декодувати, ніж 0 (найнижчий рівень стиснення) у цьому прикладі.

    Порівняти розмір файлу

    Розшифруйте файли PNG і Покажіть хеші MD5

    Оскільки обидва хеші однакові, ви можете бути впевнені, що декодовані виходи (незжаті сирі файли) є однаковими.

    Далі йде відповідь від jjlin:

    PNG без втрат. GIMP, швидше за все, не використовує найкращий вибір формулювань у цьому випадку.

    Подумайте про це як якість стиснення або рівень стиснення. З меншою компресією ви отримуєте більший файл, але для отримання цього часу потрібно менше часу, тоді як при більш високому стисненні ви отримуєте менший файл, який займає більше часу.

    Як правило, ви отримуєте зменшення прибутковості, тобто не стільки зменшення розміру порівняно зі збільшенням часу, необхідного для підйому до найвищих рівнів стиснення, але до вас.


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.