要求
我正在使用这个 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 位。