要求

要求

要求

我正在使用这个 shell 脚本创建一个 ICO 文件来满足这个要求:

图标应为 Windows .ico 文件,并包含32 位以下尺寸的图像:16、24、32、48 和 256。

#!/bin/sh

echo "*** One way: use Inkscape ***"
inkscape -w 16 -h 16 -o 16.png icon.svg
inkscape -w 24 -h 24 -o 24.png icon.svg
inkscape -w 32 -h 32 -o 32.png icon.svg
inkscape -w 48 -h 48 -o 48.png icon.svg
inkscape -w 256 -h 256 -o 256.png icon.svg
magick convert 16.png 24.png 32.png 48.png 256.png icon.ico
magick identify icon.ico

echo "*** Other way ***"
magick convert -background none icon.svg -resize 16x16   -depth 32 16-32.png
magick convert -background none icon.svg -resize 24x24   -depth 32 24-32.png
magick convert -background none icon.svg -resize 32x32   -depth 32 32-32.png
magick convert -background none icon.svg -resize 48x48   -depth 32 48-32.png
magick convert -background none icon.svg -resize 256x256 -depth 32 256-32.png
magick convert -background none 16-32.png 24-32.png 32-32.png 48-32.png 256-32.png -depth 32 icon.ico
magick identify icon.ico

echo "*** Other way: simpler ***"
magick convert -background none icon.svg -define icon:auto-resize="256,48,32,24,16" -depth 32 icon.ico
magick identify icon.ico

32 位?

但是输出日志显示生成的ICO文件都是8位的sRGB图片,如何生成32位的呢?

截屏

答案1

这些名称的命名从来都不一致。每个组织似乎对编号的看法都不同。

您的 32 位文件实际上是 8 位文件。
每个通道使用 8 位。您有 4 个通道 - 红色、绿色、蓝色 + Alpha。4
*8 位通道 = 32 位。
同样,没有 alpha 的简单 RGB 文件将是 3*8=24 位。

RGBA 颜色模型

相关内容