PNG форматът трябва да е без загуба на формат, но когато запазвате изображение като PNG файл, ще бъдете помолени да изберете ниво на компресия. Това означава ли, че PNG форматът всъщност не е без загуба в края на краищата? Днешната публикация "SuperUser Q & A" помага да се изясни объркването за любопитен читател.
Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.
Плейърът за четене на SuperUser иска да знае дали качеството на PNG изображение е повлияно от избраното ниво на компресия:
Както разбирам, PNG файловете използват компресия без загуба. Въпреки това, когато използвам редактор на изображения като Gimp и се опитам да запазя изображение като PNG файл, той пита за ниво на компресия, вариращо между 0 и 9.
Ако има параметър за компресиране, който влияе върху визуалната точност на компресираното изображение, как е PNG без загуба след това? Може ли някой да ми обясни това? Имам ли без загуба на поведение само когато задам нивото на компресия на 9?
Има ли разлика в качеството на изображението в зависимост от нивото на компресия, което избирате?
Сътрудниците на SuperUser LordNeckbeard и jjlin имат отговор за нас. Първо, лорд Нeкбеард:
PNG е компресиран, но без загуби
Нивото на компресия е компромис между размера на файла и скоростта на кодиране / декодиране. Прекалено обобщени, дори не-образните формати като FLAC имат подобни понятия.
Различни нива на компресия, същия декодиран изход
Въпреки че размерите на файловете са различни поради различните нива на компресия, действителният декодиран изход ще бъде идентичен. Можете да сравните MD5 хешове на декодираните изходи с ffmpeg, използвайки MD5 muxer. Това е показано най-добре с някои примери.
Създайте PNG файлове
- По подразбиране ffmpeg ще използва -compression_level 100 за PNG изход.
- Един бърз, нестабилен тест показа, че 100 (най-високото ниво на компресия) отнема около три пъти по-дълго, за да кодира и пет пъти по-дълго, за да декодира от 0 (най-ниското ниво на компресия) в този пример.
Сравняване на размера на файла
Декодиране на PNG файловете и показване на MD5 хешове
Тъй като и двата хешове са едни и същи, можете да бъдете сигурни, че декодираните изходи (некомпресираните необработени файлове) са съвсем същите.
Последвано от отговора на jjlin:
PNG е без загуба. Най-вероятно GIMP не използва най-добрия избор на формулировка в този случай.
Помислете за това като качество на компресията или ниво на компресия, При по-ниска компресия получавате по-голям файл, но отнема по-малко време за производство, докато при по-висока компресия получавате по-малък файл, който отнема по-дълго време за производство.
Обикновено получавате намаляваща възвращаемост, т.е. не толкова намаляване на размера в сравнение с увеличаването на времето, необходимо за достигане на най-високите нива на компресия, но зависи от вас.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.