Нотатки від команди про майстерність, формати та невеликі рішення, що стоять за гарною круглою обрізкою.
Контейнер без втрат, що зберігає PNG
PNG спирається на DEFLATE, алгоритм без втрат. Він виписує значення RGBA кожного пікселя з точністю, проганяє оборотний фільтр по кожному рядку розгортки спершу, а потім стискає всю решту потоком у стилі zlib. Без втрат тут значить, що значення, які ви розпаковуєте, побайтово ті, що ви вклали. У випадку JPG на PNG значення, що входять, це пікселі, які браузер віддає після декодування JPEG, а ті вже несуть кожне наближення, що його вніс початковий запис JPEG. Тож PNG слухняно нотує наближення, а не справжню сцену, що була знята. За вимірами JPEG на 17 КБ за 1024x768 сідає близько 105 КБ як PNG, тоді як JPEG на 116 КБ за 3840x2160 доходить до приблизно 384 КБ. Множники стежать за роздільністю, а не за налаштуванням якості JPEG, через що тримаються приблизно рівно по різних сюжетах. Контейнер заробляє собі на утримання, стримуючи занепад, а не обертаючи його назад.
Чому якість JPEG не можна відновити
JPEG скидає інформацію назавжди. Його стиснення проганяє косинусне перетворення по блоках 8x8, заокруглює частотні коефіцієнти до набору грубішого, і зберігає ці заокруглені числа. Те заокруглення йде лише в один бік, тож коефіцієнт, що читався як 47, перш ніж його притиснули до 50, уже не можна штовхнути назад, а файл не ховає пам'яті про 47. Декодування JPEG відбудовує пікселі із заокруглених коефіцієнтів, які є здогадами про оригінали. Обгорніть ці здогади у PNG, і ви матимете бездоганну копію вадливої картинки. Ніщо з цього не є вадою PNG чи Araluma, це просто як працює стиснення з втратами, де будь-що впущене під час запису лишається впущеним. Єдиний шлях до кращої якості JPEG це повернутися до нестиснутого джерела або до файлу RAW.
Виміряне зростання розміру файлу
Наскільки JPG роздувається дорогою до PNG, залежить від картинки, але тенденція стійка. Жваві фотографії з багатими тональними переходами ростуть найбільше, бо саме цей матеріал JPEG стискає чудово, тоді як кодер PNG без втрат не встигає на таких шумних пікселях. З власних тестів інструмента, світлина JPEG на 17 КБ за 1024x768 стає PNG на 105 КБ, приблизно шестикратний стрибок, а світлина JPEG на 116 КБ за 3840x2160 стає PNG на 384 КБ, приблизно у 3,3 раза більша. Плаский матеріал як знімки екрана й піктограми пасує JPEG погано від початку й зазвичай несе там більше ваги, тож його PNG росте менш різко. Урок простий, якщо ви женетеся за меншим виходом, обертання JPG на PNG штовхає вас у хибний бік.
Прозорість, можливість проти вмісту
8-бітний альфа-канал PNG це риса контейнера, що дозволяє кожному пікселю нести непрозорість від 0 для повністю чистого до 255 для повністю щільного. Коли JPG перебудовується як PNG через рушій зображень платформи, кожен піксель виходить за 255, повністю непрозорим, бо JPG не мав прозорості, щоб передати її далі, із самого початку. PNG стоїть напоготові зберегти дані альфи, файл просто жодних не несе, раз жодних не було у джерелі. Вставлення прозорості у зображення бере окрему операцію, чи то маскування фону вручну в редакторі, чи запуск автоматичного вилучача фону. Вилучач, налаштований виглядати об'єкт, здатен дати PNG зі справжньою альфою, виставивши непрозорість пікселів фону в нуль після перетворення.
Обробка метаданих EXIF
Коли файл перебудовується, його теги EXIF, IPTC і XMP відпадають від PNG у кожному браузері, забираючи з собою координати GPS, корпус камери, дату зйомки, текст авторських прав, і будь-який власний XMP, який тримав JPG. Профілі кольорів розходяться трохи. Chrome і Safari зберігають тег sRGB на тому, що виходить, тоді як Firefox відпускає його з усією рештою. Тож PNG безпечний у sRGB будь-де, де ви його відкриєте, хоча профіль із широкою гамою як Display-P3 чи Adobe RGB не переживе Firefox. Для звичайного вебу й обміну скидання тегів це плюс, що зрізає трохи ваги й знімає дані про місцеперебування з ваших світлин. Для професійної чи архівної роботи, що мусить тримати вбудовані метадані, ведіть цей ланцюг присвяченим інструментом до перетворення формату або після нього.
Приватність і куди потрапляє робота
Куди потрапляє робота, залежить від кількості. Для одного зображення нічого не залишає браузер, і ви можете перевірити це наживо за секунди. Відкрийте DevTools у Chrome, перейдіть на панель Мережа, відфільтруйте за XHR і Fetch і перетворіть файл. Під час кодування нічого не з'являється. Для двох або більше Araluma надсилає їх на наш сервер, який перетворює, збирає результат і повертає посилання для завантаження. Це посилання і перетворені файли видаляються приблизно за 2 години. Шлях для одного зображення тримає все на пристрої, поза мережею, тоді як пакет міняє це на завершення багатьох файлів за раз. Для знімка чогось приватного або фото, позначеного вашим розташуванням, перетворення по одному тримає його на вашій машині, справжня різниця, а не гасло.