Бележки от екипа за майсторството, форматите и малките решения зад добрия кръгъл изрез.
Контейнерът без загуби, какво съхранява PNG
PNG се обляга на DEFLATE, алгоритъм без загуби. Той записва стойностите RGBA на всеки пиксел точно, прокарва първо обратим филтър над всеки ред от сканирането, после стяга цялото с поток от типа на zlib. Без загуби тук означава, че стойностите, които декомпресирате, са байт по байт онези, които сте вложили. В случая JPG към PNG влизащите стойности са пикселите, които браузърът връща, след като декодира JPEG, и те вече носят всяко приближение, въведено от оригиналния запис на JPEG. Така PNG послушно записва приближенията, а не реалната сцена, която е била заснета. Измерено, JPEG от 17 KB при 1024x768 каца близо до 105 KB като PNG, докато JPEG от 116 KB при 3840x2160 достига около 384 KB. Кратностите следват разделителната способност, а не настройката за качество на JPEG, затова остават горе-долу постоянни през съдържанието. Контейнерът печели мястото си, спирайки спада, а не обръщайки го.
Защо качеството на JPEG не може да бъде възстановено
JPEG отронва информация завинаги. Компресията му прокарва косинусова трансформация през блоковете 8x8, закръгля честотните коефициенти надолу до по-груб набор и съхранява тези закръглени числа. Това закръгляне отива само в една посока, така че коефициент, който е чел 47, преди да щракне до 50, никога не може да бъде побутнат назад, а файлът не пази памет за 47-те. Декодирането на JPEG възстановява пиксели от закръглените коефициенти, които са догадки за оригиналите. Обвийте тези догадки в PNG и получавате безупречно копие на дефектна картина. Нищо от това не е недостатък на PNG или на Araluma, така просто работи компресията със загуби, при което каквото отпадне при записа, остава отпаднало. Единственият път към по-добро качество на JPEG е да се върнете към некомпресирания източник или RAW файла.
Измерено нарастване на размера на файла
Колко набъбва JPG по пътя си към PNG зависи от картината, но тенденцията е постоянна. Натоварени фотографии с богати тонални преходи растат най-много, защото това е материалът, който JPEG компресира превъзходно, докато кодерът без загуби на PNG не може да насмогне на такива шумни пиксели. От собствените тестове на този инструмент, фотография JPEG от 17 KB при 1024x768 става PNG от 105 KB, около шесткратен скок, а фотография JPEG от 116 KB при 3840x2160 става PNG от 384 KB, около 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 часа. Пътят за едно изображение държи всичко на устройството, извън мрежата, докато партида го разменя за приключването на много файлове наведнъж. За снимка на нещо лично или снимка, маркирана с местоположението ви, преобразуването едно по едно го държи на машината ви, истинска разлика, не лозунг.