我已在InkScape中绘制了一个图标,并希望将其导出到ICO文件,该文件将包含所有合理分辨率(16x16、32x32,... 256x256等)的子画面。如何做到这一点(无需使用庞大而昂贵的软件,如Photoshop,CorelDraw等)?
我已在InkScape中绘制了一个图标,并希望将其导出到ICO文件,该文件将包含所有合理分辨率(16x16、32x32,... 256x256等)的子画面。如何做到这一点(无需使用庞大而昂贵的软件,如Photoshop,CorelDraw等)?
Answers:
您可以立即使用ImageMagick:
convert -density 384 icon.svg -define icon:auto-resize icon.ico
convert -background none icon.svg -define icon:auto-resize icon.ico
保持透明背景。
magick convert -background none icon.svg -define icon:auto-resize icon.ico
为我工作。
命令行解决方案:
1)使用InkScape将SVG导出为PNG
2)使用ImageMagick将此PNG图像调整为所需大小:
magick convert master.png -resize 16x16 16.png
magick convert master.png -resize 32x32 32.png
magick convert master.png -resize 48x48 48.png
3)将PNG图像转换为ICO:
magick convert 16.png 32.png 48.png icon.ico
4)确保您的ICO包含所有内容:
identify icon.ico
icon.ico[1] ICO 16x16 16x16+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 32x32 32x32+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
icon.ico[0] ICO 48x48 48x48+0+0 32-bit sRGB 21.2KB 0.000u 0:00.000
Bash版本...
#!/bin/bash
set -ex
svg=$1
size=(16 32 24 48 72 96 144 152 192 196)
echo Making bitmaps from your svg...
for i in ${size[@]}; do
inkscape $svg --export-png="favicon-$i.png" -w$i -h$i --without-gui
done
echo Compressing...
## Replace with your favorite (e.g. pngquant)
# optipng -o7 favicon-*.png
pngquant -f --ext .png favicon-*.png --posterize 4 --speed 1
echo Converting to favicon.ico...
convert $(ls -v favicon-*.png) favicon.ico
## Clean-up maybe?
# rm favicon-*.png
echo Done
用法:
./favicon.sh your-square-svg-file.svg
需要:来自软件包管理器的inkscape imagemagick optipng(可选)。
我发现为bash shell重新创建它更容易,因为Win10和Inkscape并不相处。这已经在Windows Subsystem for Linux上进行了测试,但也可以在Mac上运行。
使用此参考来选择我关心的尺寸:https : //github.com/audreyr/favicon-cheat-sheet。size
根据您的特定需求调整阵列。
我建议这种方法:
1)创建一个脚本以将SVG导出到任何所需的大小。我已经编码了这个.bat脚本来帮助我创建一个Android图标
@echo off
set file="%~f1"
set path=%~dp1
set inkscape="C:\Program Files\Inkscape\inkscape.exe"
echo Le icone saranno salvate in %path%
echo Produzione icone applicative
echo %file% --export-png="%path%/ic32.png" -w32 -h32 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic48.png" -w48 -h48 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic72.png" -w72 -h72 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic96.png" -w96 -h96 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic144.png" -w144 -h144 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic192.png" -w192 -h192 > %~dp1/commands.txt
echo %file% --export-png="%path%/ic512.png" -w512 -h512 > %~dp1/commands.txt
%inkscape% --shell < %~dp1/commands.txt
erase "%~dp1/commands.txt"
echo Procedura terminata
注意:
使用此参数,Inkscape将进入交互式命令行外壳模式。在这种模式下,您可以在提示符下键入命令,然后Inkscape将执行命令,而不必为每个命令运行新的Inkscape副本。此功能对脚本和服务器使用最有用:它没有添加任何新功能,但可以提高重复调用Inkscape来执行命令行任务(例如导出或转换)的任何脚本的速度和内存要求。Shell模式下的每个命令必须是完整有效的Inkscape命令行,但不能包含Inkscape程序名称,例如“ file.svg --export-pdf = file.pdf”。(请参阅inkscape手册)
2)在上述脚本中添加philippe-b答案中所述的转换语法,该转换语法将所有生成的PNG合并到单个ICO文件中
3)(可选)删除所有导出的PNG,因为不再需要它们
这个网站是我访问收藏图标的最佳途径,因为它包含大多数设备(Windows,macOS,Android,iOS)“添加到主屏幕”的图标 https://realfavicongenerator.net/