Notatki zespołu o rzemiośle, formatach i drobnych decyzjach stojących za dobrym okrągłym przycięciem.
Bezstratny kontener, co przechowuje PNG
PNG wspiera się na DEFLATE, algorytmie bezstratnym. Wypisuje wartości RGBA każdego piksela z dokładnością, przepuszcza odwracalny filtr przez każdą linię skanowania najpierw, a potem ściska całą resztę strumieniem w stylu zlib. Bezstratny znaczy tu, że wartości, które rozpakowujesz, są bajt w bajt tymi, które włożyłeś. W przypadku JPG na PNG wartości wchodzące to piksele, które przeglądarka oddaje po zdekodowaniu JPEG, a te już niosą każde przybliżenie, jakie wprowadził pierwotny zapis JPEG. Więc PNG posłusznie notuje przybliżenia, a nie prawdziwą scenę, która została sfotografowana. Po pomiarach JPEG o wadze 17 KB przy 1024x768 siada blisko 105 KB jako PNG, podczas gdy JPEG o wadze 116 KB przy 3840x2160 dochodzi do około 384 KB. Mnożniki śledzą rozdzielczość, a nie ustawienie jakości JPEG, dlatego trzymają się z grubsza równo w różnych treściach. Kontener zarabia na utrzymanie, wstrzymując upadek, a nie odwracając go.
Dlaczego jakości JPEG nie da się odzyskać
JPEG zrzuca informację na dobre. Jego kompresja przepuszcza transformację kosinusową przez bloki 8x8, zaokrągla współczynniki częstotliwości do zbioru grubszego, i przechowuje te zaokrąglone liczby. To zaokrąglanie idzie tylko w jedną stronę, więc współczynnik, który czytał się jako 47, zanim go przyciśnięto do 50, nie da się już pchnąć z powrotem, a plik nie chowa pamięci o 47. Dekodowanie JPEG odbudowuje piksele z zaokrąglonych współczynników, które są zgadywaniem oryginałów. Owiń te zgadywania w PNG, a dostaniesz nieskazitelną kopię wadliwego obrazka. Nic z tego nie jest wadą PNG ani Araluma, to po prostu jak działa kompresja stratna, gdzie cokolwiek upuszczone w czasie zapisu zostaje upuszczone. Jedyna droga do lepszej jakości JPEG to powrót do nieskompresowanego źródła albo do pliku RAW.
Zmierzony wzrost rozmiaru pliku
Jak bardzo JPG puchnie w drodze do PNG, zależy od obrazka, ale trend jest stały. Ruchliwe fotografie z bogatymi przejściami tonalnymi rosną najbardziej, bo to właśnie ten materiał JPEG ściska znakomicie, podczas gdy bezstratny koder PNG nie dotrzymuje kroku na tak zaszumionych pikselach. Z własnych testów narzędzia, zdjęcie JPEG o wadze 17 KB przy 1024x768 staje się PNG o wadze 105 KB, mniej więcej sześciokrotny skok, a zdjęcie JPEG o wadze 116 KB przy 3840x2160 staje się PNG o wadze 384 KB, mniej więcej 3,3 raza większe. Płaski materiał jak zrzuty ekranu i ikony pasuje JPEG słabo od początku i zwykle niesie tam więcej wagi, więc jego PNG rośnie mniej gwałtownie. Lekcja jest prosta, jeśli gonisz za mniejszym wyjściem, obrócenie JPG w PNG pcha Cię w niewłaściwą stronę.
Przezroczystość, możliwość kontra zawartość
8-bitowy kanał alfa PNG to cecha kontenera, pozwalająca każdemu pikselowi nieść krycie od 0 dla w pełni przezroczystego do 255 dla w pełni solidnego. Gdy JPG jest odbudowywany jako PNG przez silnik obrazów platformy, każdy piksel wychodzi przy 255, w pełni nieprzezroczysty, bo JPG nie miał przezroczystości do przekazania dalej na początku. PNG stoi w gotowości, by przechować dane alfa, plik po prostu żadnych nie niesie, skoro żadnych nie było u źródła. Wstawienie przezroczystości do obrazu bierze osobną operację, albo maskowanie tła ręcznie w edytorze, albo uruchomienie automatycznego usuwacza tła. Usuwacz dostrojony, by wypatrywać obiekt, potrafi dać PNG z autentyczną alfą, ustawiając krycie pikseli tła na zero po przekształceniu.
Obsługa metadanych EXIF
Gdy plik jest odbudowywany, jego etykiety EXIF, IPTC i XMP odpadają od PNG w każdej przeglądarce, zabierając ze sobą współrzędne GPS, korpus aparatu, datę ujęcia, tekst praw autorskich, i dowolny własny XMP, który trzymał JPG. Profile kolorów rozchodzą się trochę. Chrome i Safari zachowują etykietę sRGB na tym, co wychodzi, podczas gdy Firefox puszcza ją z całą resztą. Więc PNG jest bezpieczny w sRGB gdziekolwiek go otworzysz, choć profil o szerokiej gamie jak Display-P3 czy Adobe RGB nie przetrwa Firefoksa. Dla zwykłej sieci i udostępniania zrzucenie etykiet to plus, ścinający trochę wagi i zdejmujący dane o lokalizacji z Twoich zdjęć. Dla profesjonalnej lub archiwalnej pracy, która musi trzymać osadzone metadane, prowadź ten łańcuch dedykowanym narzędziem przed przekształceniem formatu albo po nim.
Prywatność i gdzie ląduje praca
To, gdzie ląduje praca, zależy od liczby. Przy pojedynczym obrazie nic nie opuszcza przeglądarki, i możesz sprawdzić to na żywo w kilka sekund. Otwórz DevTools w Chrome, przejdź do panelu Sieć, filtruj po XHR i Fetch i przekonwertuj plik. Podczas kodowania nic się nie pojawia. Przy dwóch lub więcej Araluma wysyła je na nasz serwer, który konwertuje, łączy wynik i zwraca link do pobrania. Ten link i przekonwertowane pliki są usuwane w około 2 godziny. Ścieżka pojedynczego obrazu trzyma wszystko na urządzeniu, poza siecią, podczas gdy partia zamienia to na domknięcie wielu plików naraz. Przy zrzucie czegoś prywatnego lub zdjęciu oznaczonym twoją lokalizacją konwersja pojedynczo trzyma to na twojej maszynie, prawdziwa różnica, nie slogan.