Бележки от екипа за майсторството, форматите и малките решения зад добрия резултат.
Контейнерът без загуби, какво съхранява PNG
PNG използва алгоритъма за компресия без загуби DEFLATE. Той съхранява стойностите RGBA на всеки пиксел точно както са подадени, прилага обратим филтър към всеки ред от сканирането и компресира резултата с вариант на zlib. Без загуби означава, че декомпресираните пикселни стойности са байт по байт идентични с оригиналните. За случая JPG към PNG оригиналите са пикселите, получени когато браузърът декодира JPEG. Тези декодирани пиксели вече отразяват всички приближения, които JPEG е направил при оригиналния си запис, така че PNG вярно съхранява приближените пиксели, а не реалната сцена. Измерено, JPEG от при 1024x768 се декодира до около като PNG, а JPEG от при 3840x2160 нараства до около . Тези кратности се запазват приблизително за различни видове съдържание, защото съотношението следва разделителната способност, а не нивото на качество на JPEG. Контейнерът без загуби е ценен с това, което предотвратява, по-нататъшното влошаване, а не с това, което възстановява.
Защо качеството на JPEG не може да бъде възстановено
JPEG компресията изхвърля информация безвъзвратно. Процесът на кодиране прилага дискретна косинусова трансформация върху блокове от 8x8 пиксела, квантува получените честотни коефициенти до по-малък набор и съхранява тези квантувани стойности. Стъпката на квантуване е еднопосочна, тъй като коефициент, който е бил 47 и е закръглен до 50, не може да бъде върнат на 47 по-късно, а никакъв запис на оригиналната стойност не оцелява във файла. Когато браузърът декодира JPEG, той реконструира пиксели от квантуваните коефициенти, които са приближения на оригиналните стойности. Повторното кодиране на тези приближени пиксели като PNG произвежда запис без загуби на приближенията, така че PNG е перфектно представяне на влошеното изображение. Това не е ограничение на PNG или на този инструмент, а основно свойство на компресията със загуби, при което информацията, изхвърлена при кодиране, е изчезнала. Подобряването на качеството на JPEG изисква започване от некомпресирания или RAW оригинал.
Измерено нарастване на размера на файла
Съотношението на размера от JPG към PNG варира според съдържанието на изображението, но следва предвидим модел. Фотографските изображения със сложни тонални вариации нарастват най-много, защото трансформацията на JPEG е настроена точно за такова съдържание и постига високи съотношения на компресия, докато компресията без загуби на PNG не може да достигне тези съотношения при шумни пикселни данни. Тестови измервания от този инструмент показват, че фотография JPEG от при 1024x768 произвежда PNG от , грубо шесткратно нарастване, а фотография JPEG от при 3840x2160 произвежда PNG от , грубо 3,3 пъти. За плоски изображения като екранни снимки и икони JPEG вече е зле пригоден за съдържанието и файловете му обикновено са по-големи за еквивалентно качество, така че PNG на същото съдържание нараства по-малко драстично. Практическото следствие е пряко, ако размерът на изходния файл има значение за вашия случай, преобразуването на JPG в PNG влошава ситуацията, а не я подобрява.
Прозрачност, възможността срещу съдържанието
PNG поддържа 8-битов алфа канал като характеристика на контейнера, при която файл може да включва стойности на непрозрачност за всеки пиксел в диапазона от 0 (напълно прозрачен) до 255 (напълно непрозрачен). Когато JPG се преобразува в PNG чрез повторно кодиране през образната машина на платформата, полученият PNG се задава като напълно непрозрачен, с всеки пиксел при алфа стойност 255, защото изходният JPG изначално нямаше информация за прозрачност. Форматът PNG е готов да съдържа данни за прозрачност, файлът просто не съдържа никакви, защото такива не присъстваха в източника. Добавянето на прозрачност към изображението изисква отделна обработка, или маскиране на фона в редактор, или използване на автоматична стъпка за премахване на фон. Инструмент за премахване на фон, обучен да разпознава обекта, може да произведе PNG с истинско алфа, като нулира алфа стойностите на пикселите на фона след преобразуването.
Обработка на EXIF метаданни
Конвейерът за повторно кодиране премахва EXIF, IPTC и XMP метаданните от изхода PNG във всеки браузър. Това означава, че GPS координатите, моделът на камерата, датата на заснемане, низовете за авторски права и всякакви потребителски XMP полета, налични в изходния JPG, се отстраняват. ICC цветовите профили следват малко по-различен път, при който Chrome и Safari запазват етикета на sRGB ICC профил в изхода, а Firefox го премахва заедно с всички други метаданни. Практическият резултат е изход, безопасен за sRGB, във всички браузъри, но широкогамутните профили като Display-P3 или Adobe RGB се губят във Firefox. За повечето уеб и споделящи употреби премахването на метаданни е полезно, тъй като намалява леко размера на изхода и премахва данните за местоположение от снимките. За професионална фотография или архивни работни процеси, при които вградените метаданни трябва да бъдат запазени, обработете веригата от метаданни със специализиран инструмент преди или след преобразуването на формата.
Поверителност на практика
Къде се случва преобразуването зависи от броя файлове. За едно изображение никакви данни не напускат браузъра и това е проверимо в реално време. Мрежата остава неактивна при единично преобразуване. Списъкът остава празен по време на кодирането. За два или повече файла RoundCut ги изпраща на нашия сървър, който преобразува, опакова резултата и връща връзка за изтегляне. Тази връзка и преобразуваните файлове се изтриват за около 2 часа. Пътят на едно изображение тече изцяло на устройството ви, извън мрежата, докато партидният път го разменя за удобството да преобразувате много файлове наведнъж. За изображения с чувствително съдържание, като снимка на екрана на личен документ или снимка с данни за местоположение, преобразуването едно по едно държи всичко локално.