Нотатки від команди про майстерність, формати та невеликі рішення, що стоять за добрим результатом.
Чому фотографічні PNG такі великі
Стиснення PNG без втрат зберігає кожен піксель точно. Для фотографічного зображення з мільйонами тонко мінливих тонів це дає дуже великі файли, бо майже немає чого дедуплікувати чи передбачати між сусідніми пікселями. Типове фото 1600x1200 зберігається як PNG на 3 до 5 МБ. Те саме зображення як JPEG за якості 85 вкладається в 200 до 400 КБ. Цей розрив дає дискретне косинусне перетворення в серці JPEG, яке працює в блоках 8x8 пікселів, відкидає високочастотну деталізацію, до якої зорова система людини найменш чутлива, і компактно кодує решту коефіцієнтів. Результат, значно менший файл для будь-якого зображення з безперервною тоновою варіацією, а це, по суті, будь-яке фото. Гарантія PNG без втрат цінна для графіки й робочих файлів, але це хибний контейнер для фотографій, готових до обміну.
Прозорість та альфа-канал
PNG підтримує повний 8-бітний альфа-канал, тобто кожен піксель може бути від цілком прозорого до цілком непрозорого. JPG не визначає жодної інформації про альфу, бо в його контейнері немає поля для попіксельної прозорості. Коли механізм зображень платформи перезбирає PNG у JPEG, він накладає альфа-канал на колір тла перед записом. Тло за замовчуванням біле, тому прозорі ділянки PNG виглядають білими в підсумковому JPG. Ключове те, що жоден інструмент не створить прозорий JPG, бо формат не підтримує такого поняття. Якщо збереження вирізу важливе, відповідь, WebP або збереження PNG. RoundCut обирає білий як колір заливки, бо він збігається з тлом більшості документів і товарних карток.
Виміряна продуктивність запису
Виміряно в Chrome 148, комп'ютер Linux, із використанням шляху запису JPEG платформи. Зображення 400x300 (0,12 МП) записується приблизно за 10 до 15 мс. Зображення 1024x768 (0,78 МП) записується за 13 до 20 мс. Зображення 3840x2160 (8 МП) записується приблизно за 1,4 секунди. Зображення 8000x6000 (48 МП) записується за 1,5 секунди. Запис JPEG у браузері істотно швидший за запис PNG для того самого зображення й набагато швидший за AVIF, якому потрібен окремий модуль і який може зайняти 25 секунд за 48 МП навіть у комп'ютерному Chrome. Ця перевага у швидкості робить PNG у JPG одним із найшвидших шляхів конвертації в цій родині, без витрат на зайве завантаження, бо запис JPEG вбудований у кожен браузер.
EXIF та обробка метаданих
Конвеєр перезбирання видаляє метадані EXIF, IPTC та XMP з підсумкового JPG в усіх браузерах. Це означає, що координати розташування, модель камери, дата зйомки, повідомлення про авторські права й будь-які власні поля з вихідного PNG прибираються. Колірні профілі ICC ідуть іншим шляхом, де Chrome і Safari зберігають профіль ICC sRGB у виводі, а Firefox видаляє його цілком. Практичний підсумок у тому, що сконвертований JPG безпечний у sRGB в усіх браузерах, але якщо ваш PNG був позначений профілем широкого охоплення, як-от Display-P3 чи Adobe RGB, ця позначка не переживе Firefox. Якщо збереження повних метаданих, вимога вашого робочого процесу, редагуйте їх спеціальним інструментом після конвертації. Для типового вебу й обміну видалення метаданих корисне, бо трохи зменшує файл і прибирає дані GPS із фотографій.
Коли артефакти JPG помітні
Стиснення JPEG працює на блоках 8x8 пікселів. Коли вихідне зображення містить жорсткий перехід між двома дуже різними кольорами всередині одного блока, крок стиснення JPEG наближає цей перехід обмеженими частотними коефіцієнтами. Результат, дзвін, ореол світліших чи темніших пікселів навколо краю. У фотографіях це непомітно, бо краї ніколи не бувають ідеально різкими, а реальні фото несуть мікроваріацію, якій це наближення добре відповідає. У знімках екрана, логотипах, елементах інтерфейсу з жорсткими межами, тексті чи сусідніх пласких блоках кольору дзвін чітко помітний за будь-якого налаштування якості, бо ці елементи, саме той сигнал, з яким алгоритм дає раду погано. Порада проста, не конвертуйте знімки екрана, логотипи чи насичені текстом зображення в JPG. Тримайте їх як PNG або використовуйте WebP для меншого файлу, який повністю обходить проблему.
Приватність на практиці
Де відбувається перетворення, залежить від кількості файлів. Для одного зображення жодні дані не залишають браузер, і це перевірно в реальному часі. Список лишається порожнім під час кодування. Для двох або більше файлів RoundCut надсилає їх на наш сервер, який перетворює, пакує результат і повертає посилання для завантаження. Це посилання і перетворені файли видаляються приблизно за 2 години. Шлях одного зображення йде цілком на вашому пристрої, поза мережею, тоді як пакетний шлях міняє це на зручність перетворити багато файлів за раз. Для зображень із чутливим вмістом, як знімок особистого документа або фото з даними розташування, перетворення по одному тримає все локально.