Как перевести PNG в файл ICO?
Перетащите PNG на эту страницу, оставьте отмеченными 16, 32 и 48 пикселей и скачайте результат. Всё выполняется в браузере, поэтому изображение никуда не загружается. В командной строке обычный аналог — magick logo.png -define icon:auto-resize=48,32,16 favicon.ico.
Почему мой значок размыт на маленьких размерах?
Почти всегда потому, что в файле лежит одно большое изображение, а всё мелкое — это браузер, уменьшающий его на лету. Как только пиксельная сетка уменьшается, никакого «без потерь» уже не существует: тонкие линии и мелкие детали пропадают примерно ниже 24 пикселей, каким бы хорошим ни было масштабирование, так что качество определяется тем, какие размеры упакованы, а не конвертером. Упакуйте настоящий слой 16 пикселей, а если логотип детализированный — упростите для этого слоя рисунок, а не масштабируйте его.
Внутри лучше хранить PNG или несжатый BMP?
PNG, если нет причин поступить иначе: он на порядок меньше, и его читают все современные браузеры и все выпуски Windows начиная с Vista. Несжатые растры всё же остаются более частым выбором на практике — в основном потому, что ImageMagick по умолчанию преобразует именно в них, — и они безопаснее для очень старых программ. Страница показывает оба размера файла, чтобы решение принималось по числу.
Почему нет варианта 512 пикселей?
Каталог хранит длину каждой стороны в одном байте, поэтому максимальное выразимое значение — 255, а 0 зарезервирован под 256. Записать 512 нечем. Конвертеры, которые это предлагают, создают запись каталога, не описывающую лежащее за ней изображение, — верный способ получить значок, который часть программ откажется показывать.
Останется ли PNG с прозрачным фоном прозрачным после преобразования в ICO?
Да. Альфа-канал записывается полностью, а однобитовая маска, которую вместо него читают старые программы, не остаётся пустой, а выводится из альфа-канала: именно пустая маска превращает прозрачный фон в чёрный квадрат в тех инструментах, которые её не заполняют. Частично прозрачный пиксель считается в маске прозрачным, если его альфа опускается ниже половины: маска хранит один бит на пиксель, поэтому другого варианта нет.
Можно ли перевести SVG в ICO?
Да, и векторный исходник — лучший возможный вход, потому что каждый размер рисуется из геометрии, а не пересчитывается из растра. Одна оговорка: всё, что SVG подтягивает по сети — связанное изображение, удалённый шрифт, импортированная таблица стилей, — при конвертации блокируется без всякой ошибки. Страница проверяет такие ссылки и предупреждает о них.
Нужен ли по-прежнему favicon.ico в корне сайта?
Держать его стоит, но главным путём он быть перестал. Спецификация HTML говорит, что браузеры могут запросить /favicon.ico и только тогда, когда на странице нет элемента link со значком. Браузерам предписано сначала использовать элемент link; файл в корне закрывает читалки лент, поисковых роботов и всё прочее, что не разбирает ваш HTML.
Нужен ли Google файл ICO для выдачи поиска?
Нет. Документация Google по favicon принимает BMP, GIF, ICO, PNG, JPEG, PPM и TIFF, требует квадратное изображение не меньше 8 пикселей и рекомендует брать больше 48 пикселей, чтобы значок выглядел правильно в разных местах. Одного большого файла PNG достаточно; .ico нужен для всего остального.
Почему браузер показывает только один размер, когда я открываю .ico?
Потому что больше элемент изображения дать и не может. Отдайте браузеру многоразмерный .ico — он выберет одно изображение, на практике самое большое, а остальные останутся недоступны. Чтобы перечислить каждый слой, контейнер нужно разбирать напрямую, и именно это делает вкладка ICO → PNG на этой странице.
Что значит, когда каталог и изображение расходятся в размере?
Это значит, что файл противоречит сам себе, и декодеры поступают противоположным образом: одни верят каталогу и в итоге не рисуют ничего, другие верят данным изображения и показывают его правильно. Это классическая причина того, что значок работает на одной машине и невидим на другой, поэтому страница отмечает такой случай при открытии файла.
Откроет ли этот инструмент файлы ICO, которые другие конвертеры отвергают?
Часто да. Слои, сохранённые как палитровые растры — четыре или восемь бит на пиксель, — до сих пор используются несколькими известными favicon, и многие конвертеры их попросту не принимают. Сломанные слои тоже обрабатываются по одному, поэтому один нечитаемый размер не мешает выгрузить остальные. В списке также помечается любой встроенный слой PNG, который отбросит Firefox: его декодер ICO принимает только 8-битный RGB или RGBA, поэтому палитровый или полутоновый PNG там исчезает. Собственный сайт Mozilla выпускал значок ровно с этой проблемой — его слой 64 пикселя оказался палитровым PNG, который сам же Firefox и отбрасывает, и значок держится только на остальных слоях.
Загружается ли моё изображение куда-нибудь?
Нет. Файл читается через File API браузера, рисуется на canvas этой страницы и упаковывается в контейнер кодом JavaScript, который работает локально. Ни один запрос не уносит изображение никуда, и это можно подтвердить на вкладке Network в инструментах разработчика — или загрузив страницу, отключив сеть и всё равно выполнив преобразование офлайн.