Преобразование файлов GIF, PNG и JPG в .ICO с использованием Imagemagick

От: JPG, To: ICO;

/usr/bin/convert -resize x16 -gravity center -crop 16x16+0+0 input.jpg \
-transparent white -colors 256 output/favicon.ico 

Это вывод для командной строки.

От: GIF, PNG To: ICO;

/usr/bin/convert -resize x16 -gravity center -crop 16x16+0+0 input.png \
-flatten -colors 256 output/favicon.ico 

У меня проблемы с прозрачностью. Я не могу получить правильный код для него, я попробовал -channel alpha -negate и т.д.

Это создает образ, и когда я обращаюсь к сайту, он работает с Firefox, но ни один из других браузеров. IE, Chrome, Opera и Safari все ненавидят по какой-то причине, это простой файл favicon.ico. Мое заключение заключается в том, что моя команда где-то ломается. Пожалуйста, помогите?

Ответ 1

Добавьте этот параметр в convert:

-background transparent

Однако имейте в виду, что на вашем исходном изображении должен быть альфа-канал. PNG могут иметь альфа-канал, JPEG - нет.

Ответ 2

Чтобы преобразовать PNG в ICO, задав нужные размеры и сохранив прозрачность:
(работает для ImageMagick 7.0 или новее)

convert -background transparent "favicon.png" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 "favicon.ico"

В этом примере файл ico будет иметь 9 записей: 16x16 px, 24x24 px и т.д. (При условии, что он квадратный)


Подсказка: если вы работаете в Windows 7, вы можете сохранить приведенный ниже код в файле REG и применить его к реестру. Это создаст запись в контекстном меню файлов PNG под названием "Преобразовать в ICO". Если щелкнуть правой кнопкой мыши файл file.png и выбрать эту команду, файл file.png.ico будет создан в той же папке.

InstallConvertToIcoCtxMenu.reg
(не забудьте заменить путь ImageMagick на путь, по которому он установлен на вашем компьютере)

Windows Registry Editor Version 5.00

; Created with Default Programs Editor
; http://defaultprogramseditor.com/

; Edit Verb
[HKEY_CURRENT_USER\Software\Classes\pngfile\shell\ConvertToICO]
@="Convert to ICO"
[HKEY_CURRENT_USER\Software\Classes\pngfile\shell\ConvertToICO\command]
@="\"C:\\Program Files\\ImageMagick\\7.0.3-Q16\\convert.exe\" -background transparent \"%1\" -define icon:auto-resize=16,24,32,48,64,72,96,128,256 \"%1.ico\""
[HKEY_CURRENT_USER\Software\Classes\pngfile\shell\ConvertToICO]
"Icon"="C:\\Program Files\\ImageMagick\\7.0.3-Q16\\convert.exe,0"

An entry is added to context menu

Ответ 3

Одно из решений проблемы ICO не будет использовать его:

<link rel=icon href=/favicon.png>

Работает во всех браузерах, и вы можете использовать более чистый формат файла с лучшим сжатием.