我有大约 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;
它会转换它们,但结果看起来很糟糕。SVG 的清晰线条因抗锯齿而变得模糊,因为 ImageMagick 似乎将 SVG 视为任何其他图像。再加上大小都是错误的,因为几乎没有一个生成的文件是方形的。
我需要一些方法来转换具有这些条件的 SVG:
- 没有抗锯齿
- 以 SVG 绘图为中心创建方形图像
- 允许为全黑的 SVG 图像重新着色(可选)
- 使用 Linux 命令行 (Arch Linux)
完整的故事:我正在尝试从 Polymer 获取 Material Design 的图标,以便在应用程序中使用。