Без завантаження, 100% локально, без облікового запису

Стаття

Чому зображення втрачають якість з кожним збереженням

Фото, що виглядало чітким на камері, виходить блочним після пересилання через кілька групових чатів і повторного публікування пару разів. Ніхто не редагував його навмисно; воно просто пройшло через кілька перекодувань, і кожне відкинуло трохи більше деталей. Це втрата якості поколінь, стара й добре вивчена властивість стиснення зі втратами, і вона пояснює, чому сильно пошарені зображення поступово виглядають гірше. Ось що насправді відкидає перекодування зі втратами, чому це накопичується і як зупинити подальшу деградацію файлу.

Що насправді відкидає «зі втратами»

JPEG, формат за більшістю фото, якими діляться онлайн, зі втратами за задумом: стандарт за ним, ITU-T T.81, працює, перетворюючи блоки пікселів на частотні дані, а потім округлюючи ці дані більш чи менш агресивно залежно від налаштування якості, крок, що зветься квантуванням. Округлення не можна скасувати точно; відкинуті деталі справді зникають, а не десь ховаються у файлі. Високе налаштування якості округлює мʼяко, і втрату важко побачити, низьке округлює жорстко, і файл стає видимо блочним, але навіть одне-єдине збереження JPEG завжди щось відкидає.

Кожне перекодування є новим поколінням

Коли фото зберігають як JPEG уперше, піксельні дані камери квантуються один раз. Відкриття цього JPEG знову і повторне збереження, навіть без жодного редагування, декодує вже наближені пікселі і квантує їх удруге, поверх першого округлення, а не замість нього. Кожне додаткове збереження, це ще одне покоління, і кожне накопичує блочність і кольорові смуги, які вже внесло попереднє покоління. Один прохід із розумним налаштуванням якості майже непомітний; те саме налаштування, застосоване пʼять чи шість разів поспіль до того самого файлу, помітно псує фото, бо помилки з кожного попереднього покоління все ще там, коли наступне округлює знову.

Ланцюжок з пʼяти поколінь JPEG: кожне перекодування починається з уже округлених пікселів попереднього, і зображення помітно блочнішає до пʼятого покоління

Чому сильно пошарені зображення виглядають гірше

Фото, що подорожує через кілька чатів, стрічок і повторних завантажень, набуває нового покоління майже на кожному переході: застосунок повідомлень перестискає його для чату, соціальна платформа перекодовує його знову для власного конвеєра доставки, хтось скріншотить результат і повторно завантажує цей скріншот, що є ще одним повним перекодуванням уже деградованого зображення. Жоден з цих кроків не потребує недбалості чи незвично низького налаштування якості, щоб ефект накопичувався; це кумулятивно за своєю природою, і саме тому зображення, що довго й широко циркулювало, часто показує помітно більше блочності й кольорових смуг, ніж свіжа копія того самого фото.

У форматів без втрат такої проблеми немає

PNG і WebP без втрат працюють інакше: вони стискають, знаходячи закономірності в точних піксельних даних і пакуючи їх ефективніше, нічого не округлюючи, тож декодування й повторне кодування того самого файлу без втрат, без редагування, точно відтворює пікселі, покоління за поколінням. Ця гарантія і є причиною, чому скріншоти та графіку з різкими краями чи текстом зазвичай зберігають у PNG, а не JPEG. Це має свою ціну: файл без втрат для типової фотографії набагато більший за JPEG розумної якості, оскільки округлювати для зменшення розміру нічого.

Порівняння десяти повторних збережень: JPEG показує наростання видимих блочних артефактів, безвтратний PNG залишається піксельно ідентичним оригіналу

Тримайте якість файлу під контролем

Ланцюжок втрати якості поколінь накопичується лише тоді, коли кожне збереження починається з уже деградованих пікселів попереднього. Зберігання майстер-файлу без втрат, оригінального файлу з камери чи PNG, і експорт свіжого JPEG із цього майстра щоразу уникає накладання нового округлення на старе. Наш компресор зображень дозволяє обрати налаштування якості й побачити отриманий розмір файлу до того, як ви щось надішлете, а наш інструмент порівняння зображень показує оригінал і стиснуту копію поруч із повзунком, тож ви можете помітити невдале налаштування, перш ніж переслати файл далі й почати нове покоління. Обидва повністю працюють у вашому браузері: фото ніколи не залишає ваш пристрій для перевірки.

Інструменти з цієї статті

Поширені запитання

Чи псує копіювання або переміщення файлу JPEG його якість?

Ні. Копіювання файлу, прикріплення його до листа чи переміщення між папками копіює точно ті самі байти; нічого не декодується й не перекодовується, тож нічого не квантується знову. Втрата якості поколінь трапляється лише тоді, коли пікселі справді відкривають і зберігають знову, а не коли сам файл просто переміщують.

Чи можна скасувати втрату якості поколінь і відновити втрачені деталі?

Ні. Квантування справді зі втратами: округлені частотні дані, які відкинуло попереднє збереження, ніде у файлі не записані, тож жоден фільтр чи алгоритм не може їх відновити. Різкість чи придушення шуму на деградованому JPEG може зробити артефакти візуально менш помітними, але не відновлює оригінальну деталізацію.

Чи зупиняє проблему конвертація деградованого JPEG у PNG?

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

Джерела