web-dev-qa-db-ja.com

Imagemagickを使用してGIF、PNG、およびJPGを.ICOファイルに変換する

From:JPG、To:ICO;

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

これはコマンドラインの出力です。

From:GIF's、PNG To:ICO;

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

透明性に問題があります。適切なコードを取得できないようです。-channelalpha -negateなどを試しました。

これにより画像が作成され、サイトに適用すると、Firefoxで動作しますが、他のブラウザでは動作しません。 IE、Chrome、OperaとSafariは何らかの理由でそれを嫌っています。これは単純なfavicon.icoファイルです。私の結論はどこかで壊れているはずです。助けてください?

66
Chris Braid

このオプションをconvertに追加します。

-background transparent

ただし、元の画像には実際にアルファチャンネルが必要であることに注意してください。 PNGにはアルファチャネルがありますが、JPEGにはありません。

42
jcoffland

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ファイルに保存して、レジストリに適用できます。これにより、「Convert to ICO」というPNGファイルのコンテキストメニューにエントリが作成されます。 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

10
geekley

ICO問題の解決策の1つは、それを使用しないことです。

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

すべてのブラウザで機能し、圧縮率の高いsanerファイル形式を使用できます。

3
Kornel