Jak przekonwertować plik PNG na ICO?
Wystarczy przeciągnąć PNG na tę stronę, zostawić zaznaczone 16, 32 i 48 px i pobrać wynik. Wszystko dzieje się w przeglądarce, więc obraz nigdy nie jest wysyłany. W wierszu poleceń zwykłym odpowiednikiem jest magick logo.png -define icon:auto-resize=48,32,16 favicon.ico.
Dlaczego moja ikona wygląda na rozmytą w małych rozmiarach?
Niemal zawsze dlatego, że plik zawiera jeden duży obraz, a wszystko małe to przeglądarka pomniejszająca go w locie. Gdy siatka pikseli się kurczy, żadna konwersja nie jest bezstratna — cienkie kreski i drobne detale znikają poniżej mniej więcej 24 px niezależnie od jakości ponownego próbkowania, więc o jakości decyduje to, które rozmiary zostały spakowane, a nie konwerter. Trzeba spakować prawdziwą warstwę 16 px, a przy rozbudowanym logo uprościć dla niej grafikę, zamiast ją skalować.
Obrazy w środku powinny być w PNG czy w nieskompresowanej bitmapie?
PNG, o ile nie ma powodu, żeby było inaczej: jest o rząd wielkości mniejsze i czyta je każda obecna przeglądarka oraz każde wydanie Windows od Visty. Nieskompresowane bitmapy pozostają w praktyce częstszym wyborem, głównie dlatego, że ImageMagick domyślnie na nie konwertuje, i są bezpieczniejsze przy bardzo starym oprogramowaniu. Strona pokazuje oba rozmiary pliku, więc decyzję można oprzeć na liczbie.
Dlaczego nie ma opcji 512 px?
Katalog przechowuje długość każdego boku w jednym bajcie, więc największa wartość, jaką da się wyrazić, to 255, a 0 jest zarezerwowane dla 256. Zapisanie 512 nie jest możliwe. Konwertery, które to oferują, wytwarzają wpis katalogu nieopisujący obrazu, który za nim stoi — a to dobry sposób na ikonę, której część oprogramowania odmówi wyświetlenia.
Czy PNG z przezroczystym tłem pozostaje przezroczysty po zapisaniu jako ICO?
Tak. Kanał alfa jest zapisywany w całości, a jednobitowa maska, którą starsze oprogramowanie czyta w zamian, jest z niego wyprowadzana, a nie zostawiana pusta — i to właśnie pusta maska zamienia przezroczyste tło w czarny kwadrat w narzędziach, które jej nie wypełniają. Piksel częściowo przezroczysty liczy się w masce jako przezroczysty, gdy jego alfa spadnie poniżej połowy — to jedyny dostępny wybór, skoro maska ma jeden bit na piksel.
Czy mogę przekonwertować SVG na ICO?
Tak, a źródło wektorowe jest najlepszym możliwym wejściem, bo każdy rozmiar jest rysowany z geometrii, a nie próbkowany ponownie z bitmapy. Jedno zastrzeżenie: wszystko, co plik SVG pobiera przez sieć — podlinkowany obraz, zdalny krój pisma, zaimportowany arkusz stylów — jest w trakcie konwersji blokowane bez zgłoszenia błędu. Strona sprawdza takie odwołania i ostrzega.
Czy nadal potrzebuję pliku favicon.ico w katalogu głównym witryny?
Warto go mieć, ale nie jest już główną ścieżką. Specyfikacja HTML mówi, że przeglądarki mogą poprosić o /favicon.ico, i tylko wtedy, gdy strona nie ma elementu link z ikoną. To element link mają wykorzystać najpierw; plik w katalogu głównym pokrywa czytniki kanałów, roboty indeksujące i wszystko inne, co nigdy nie analizuje kodu HTML.
Czy Google potrzebuje pliku ICO do wyników wyszukiwania?
Nie. Dokumentacja Google dotycząca favicona przyjmuje BMP, GIF, ICO, PNG, JPEG, PPM i TIFF, wymaga kwadratowego obrazu o boku co najmniej 8 px i zaleca wyjście powyżej 48 px, żeby dobrze wyglądał na różnych powierzchniach. Wystarczy pojedynczy duży plik PNG; plik .ico jest dla całej reszty.
Dlaczego przeglądarka pokazuje tylko jeden rozmiar, gdy otwieram plik .ico?
Bo tyle właśnie potrafi dać element obrazu. Podany przeglądarce wielorozmiarowy plik .ico sprawia, że wybiera ona jeden obraz — w praktyce największy — a reszta pozostaje nieosiągalna. Wypisanie każdej warstwy wymaga bezpośredniego odczytania kontenera, i to właśnie robi karta ICO → PNG na tej stronie.
Co oznacza sytuacja, w której katalog i obraz nie zgadzają się co do rozmiaru?
Oznacza, że plik jest wewnętrznie sprzeczny, a dekodery radzą sobie z tym w przeciwny sposób: jedne ufają katalogowi i kończą, nie rysując niczego, inne ufają danym obrazu i renderują je poprawnie. To klasyczna przyczyna ikony, która działa na jednej maszynie, a na drugiej jest niewidoczna, dlatego ta strona zgłasza taki przypadek przy otwarciu pliku.
Czy to narzędzie otworzy pliki ICO odrzucane przez inne konwertery?
Często tak. Warstwy zapisane jako bitmapy z paletą — cztery albo osiem bitów na piksel — wciąż występują w kilku znanych plikach favicon, a wiele konwerterów odrzuca je wprost. Uszkodzone warstwy są ponadto obsługiwane pojedynczo, więc jeden nieczytelny rozmiar nie blokuje eksportu pozostałych. Lista oznacza też każdą osadzoną warstwę PNG, którą Firefox odrzuci: jego dekoder ICO przyjmuje wyłącznie 8-bitowy RGB lub RGBA, więc PNG z paletą albo w skali szarości tam znika. Własna witryna Mozilli wysyłała ikonę dokładnie z tym problemem — jej warstwa 64 px to PNG z paletą, który sam Firefox porzuca, i tylko pozostałe warstwy utrzymują ikonę widoczną.
Czy mój obraz jest gdziekolwiek wysyłany?
Nie. Plik jest odczytywany przez przeglądarkowe File API, rysowany na elemencie canvas na tej stronie i pakowany do kontenera przez JavaScript działający lokalnie. Żadne żądanie nie przenosi obrazu nigdzie dalej, co można potwierdzić w panelu sieci w narzędziach deweloperskich — albo wczytując stronę, odłączając się od sieci i mimo to wykonując konwersję bez połączenia.