Answers:
ImageMagick(Windows / Mac / Linux)包含一个称为的命令行工具convert
,可用于许多用途,包括将多个图像打包在一个图标中:
convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico
上一个命令获取5个PNG图像,并将它们组合为单个.ico文件。
与其他答案不同,可以在批处理脚本中轻松使用此方法来自动生成多个图标文件。在我的一个项目中,我只有一个矢量图像(SVG),并使用Inkscape生成各种大小的png,然后convert
创建一个图标容器。这是一个简化的示例(在bash脚本中):
#!/bin/bash
for size in 16 32 48 128 256; do
inkscape -z -e $size.png -w $size -h $size icon.svg >/dev/null 2>/dev/null
done
convert 16.png 32.png 48.png 128.png 256.png -colors 256 icon.ico
.ico
根据包含的大小将转换成多个PNG?
convert favicon.ico favicon.png
生成favicon-0.png
,favicon-1.png
等等。如果您想知道图像的尺寸,请identify
在png文件上使用命令。
convert <icon.png> -resize 64x64
代替inkscape
-dither None
了convert命令,因为默认转换为256色为我的图标添加了一些噪音
更好的ImageMagick命令:
convert in.jpg -define icon:auto-resize=16,48,256 -compress zip out.ico
identify out.ico
去引用:
- 在Gimp中打开图像
- 使您的画布方形
- 将图层调整为图片大小
- 将图层缩放到.ico文件中的最大尺寸,例如64像素
- 复制图层
- 将重复图层缩放到下一个尺寸
- 继续复制/缩放.ico文件中所需的所有大小
- 另存为.ico
在您的情况下,您可以从最大的图像开始,然后按比例缩小每个重复的图像,也可以仅添加新图层,然后将所需的特定图标图像导入该图层。
这里的接受的答案由罗布w ^,具有微不足道的适应,以避免不必键入尺寸(16,32等)不止一次:
#!/bin/bash
files=()
for size in 16 32 48 128 256; do
inkscape -z -e "$size.png" -w "$size" -h "$size" logo.svg > /dev/null 2> /dev/null
files+=("$size.png")
done
convert "${files[@]}" -colors 256 favicon.ico
unlink "${files[@]}"
这里logo.svg
表示输入(源)图像,从中我们创建期望的尺寸(较小的文件16.png
,32.png
等),这是我们然后结合到输出(结果)图标文件,favicon.ico
。您可以将第3行的尺寸列表更改为例如“ 16 24 32 48 64 72 72 128”,该convert
命令将自动进行相应调整,因为此脚本使用了G-Man在其回答中描述的技术来构建一个文件名数组。最后,我们再次使用文件名数组取消链接(删除)在第4行中创建的PNG文件。
我注意到该命令:
convert logo.svg -define icon:auto-resize=16,48,256 -compress zip favicon.ico
(相当于user400747的答案中提出的一种)实际上缩放了位图图像(质量下降),并且图层背景失去了透明度。
Windows批处理文件,它将创建多个大小的.PNG并将它们合并为一个.ICO文件:
@echo off
set inkScape="C:\SOFTWARE\GRAPHIC\INKSCAPE\inkscape.exe"
set imageMagick="C:\SOFTWARE\DEVELOPER\IMAGEMAGICK\magick.exe"
set fileName=favicon
set importType=svg
set exportType=png
set exportDpi=300
set imageSizes=(16 24 32 48 57 60 64 70 72 76 96 114 120 128 144 150 152 180 192 196 256 300 320 400 450 460 480 512 600)
for %%s in %imageSizes% do (
%inkScape% -z -f %~dp0%fileName%.%importType% -w %%s -h %%s -e %~dp0%fileName%-%%sx%%s.%exportType% -d %exportDpi%
echo CREATED: %fileName%-%%sx%%s.%exportType%
set e=%fileName%-%%sx%%s.%exportType%
call :concat (e)
)
%imageMagick% %exportFileNames%"%~dp0%fileName%.ico"
echo MERGED IN: %fileName%.ico
pause goto :eof
:concat (e) (
set exportFileNames=%exportFileNames%"%~dp0%e%"
)
如果不需要.PNG文件,则可以通过删除(或删除)它们,del FILE
或者将所有PNG保存在可以删除的目录中(之后%imageMagick% %exportFileNames%"%~dp0%fileName%.ico"
)。
希望它能帮助到别人。:)
我认为Axialis IconMaker是解决图标问题的最佳解决方案。有30天的试用期可能会为您解决问题。
我使用Axialis已经有很多年了,在许多项目中使用过,我可以证明它是一款非常有价值的产品。您不需要30天!哈!
您必须使用第三方图标编辑程序,因为MSPaint每个文件仅支持一个图标。有一对夫妇的线程在这里与图标编辑器,一些免费的,一些商业建议。
确定图标编辑器后,添加图标格式的方法将有所不同,但通常是相似的(单击按钮或选择菜单项以添加新格式)。大多数程序允许您在添加图标格式/大小时导入图标文件,但是大多数程序也允许您通过调整现有大小来创建新的格式/大小。
如果您选择在添加新格式/大小时使用现有创建选项,请确保使用现有最大图标格式创建它们,因为它将为调整大小算法提供最多的数据。另外,在创建XP / Vista图标时,请确保使用透明的版本,因为大多数程序都不擅长从头开始创建Alpha通道。
convert
每次学习ImageMagick时,我都会学习一种新方法。感谢您的回答!