我怎样才能让 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.png,它会干净地创建一个favicon.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"

相关内容