Как разрешить 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какобъяснено здесь; протестировано в моей установке 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"

Связанный контент