我有大约434个.svg图标,希望将它们准备好以在Android应用程序中使用。由于手动使用Inkspace导出所有这些图标可能是不可行的,因此我正在寻找一种使用ImageMagick等工具批量导出它们的方法。我尝试编写了一个脚本:
#!/bin/sh
echo "Deleting directories"
rm -rf ../mdpi ../hdpi ../xhdpi ../xxhdpi ../xxxhdpi
echo "Creating directories"
for d in ./*; do
mkdir -p ../mdpi/$d ../hdpi/$d ../xhdpi/$d ../xxhdpi/$d ../xxxhdpi/$d
done;
for f in ./*/*.svg; do
filename=`dirname $f`/`basename $f .svg`.png
echo "Converting $f to $filename"
convert -background transparent $f -resize 24x24 ../mdpi/$filename # 2>/dev/null
convert -background transparent $f -resize 36x36 ../hdpi/$filename # 2>/dev/null
convert -background transparent $f -resize 48x48 ../xhdpi/$filename # 2>/dev/null
convert -background transparent $f -resize 72x72 ../xxhdpi/$filename # 2>/dev/null
convert -background transparent $f -resize 96x96 ../xxxhdpi/$filename # 2>/dev/null
echo 'Done'
done;
它们被转换了,但结果看起来很糟糕。由于ImageMagick似乎将SVG视为任何其他图像,因此SVG的清晰线条被反锯齿变得模糊。而且大小都不正确,几乎没有一个生成的文件是正方形的。
我需要一种以几乎这些条件转换SVG的方法:
- 无反锯齿
- 创建一个包含SVG绘图中心的正方形图像
- 允许重新着色完全黑色的SVG图像(可选)
- 使用Linux命令行(Arch Linux)