
У меня есть 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
какобъяснено здесь; протестировано в моей установке ImageMagick 7.1.1-28 на macOS:
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"