ImageMagick でエラーなくグレースケールの png ファイルを ico ファイルに変換するにはどうすればよいですか?

ImageMagick でエラーなくグレースケールの png ファイルを ico ファイルに変換するにはどうすればよいですか?

グレースケールのPNGファイルがあり、ImageMagick(バージョン7.1.1-28)を使用してICOファイルを作成する常に次の警告が表示されます。

$ convert favicon.png -define icon:auto-resize=16,32,48,64,256 favicon.ico
convert: Cannot write image with defined png:bit-depth or png:color-type. `' @ warning/png.c/MagickPNGWarningHandler/1526.

元の PNG のカラー プロファイルが原因かもしれないと思ったので、ImageMagick を使用して最初に画像を RGB カラー スペースに強制変換し (おそらく私の想定は間違っているのでしょうか)、その中間ファイルから ICO ファイルを作成してみましたが、まったく同じエラーが発生しました。

$ convert favicon.png +profile "*" -colorspace RGB ico-temp.png
$ convert ico-temp.png -define icon:auto-resize=16,32,48,64,256 favicon.ico
convert: Cannot write image with defined png:bit-depth or png:color-type. `' @ warning/png.c/MagickPNGWarningHandler/1526.

ここで何を間違えているのでしょうか? これを機能させるために追加できるフラグはありますか?


再現を試してみたい方のために、グレースケールの SVG または PNG を ICO ファイルに変換すると、このエラーが発生することがわかりました。これは、これを再現するために作成した SVG の例です (このソースを使用して PNG に変換した場合も機能します)。

<svg xmlns="http://www.w3.org/2000/svg" 
    width="100mm" 
    height="100mm" 
    viewBox="0 0 100 100">
  <circle cx="25" cy="75" r="20" style="fill:#ccc"/>
  <circle cx="65" cy="35" r="30" style="fill:#4d4d4d"/>
</svg>

答え1

-compress none解決策として使うことを考えるここで説明; macOS 上の ImageMagick 7.1.1-28 のインストールでテスト済み:

convert favicon.png -compress none -define icon:auto-resize=16,32,48,64,256 favicon.ico

あなたの例を にfavicon.svg変換してこれを実行するとfavicon.pngfavicon.ico問題なく がきれいに作成されます。

ここに画像の説明を入力してください


その他の試みは以下をご覧ください。

これはどうでしょうか?この答え:

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

あるいは-define profile:skip=ICCここで提案-background transparent

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

またはなし-background transparent:

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

関連情報