我有一个灰度 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"