【问题标题】:Automatically Convert SVG to Android-Usable PNG自动将 SVG 转换为 Android 可用的 PNG
【发布时间】:2014-11-22 06:00:19
【问题描述】:

我有大约 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 的图标,以便在应用程序中使用。

【问题讨论】:

    标签: svg command-line imagemagick imagemagick-convert material-design


    【解决方案1】:

    作为每种矢量格式,您应该提供具有适当 DPI 设置的 -density 选项。将其设置为高于 72 将导致更好的分辨率。试试这个

    convert -density 300 -background none input.svg -resize 128x128 -gravity center -extent 128x128  output.png
    

    【讨论】:

    • 它工作得很好,除了命令应该是convert,而不是im。非常感谢!
    • 抱歉 - 我使用的是缩短的符号链接。
    • 你能发布一个 github 存储库,其中包含为 android 生成的图标吗? @LambdaDusk
    • @ClarkXP 我知道回答晚了,但this 应该正是您要找的。​​span>
    • @LambdaDusk 最后我发现materialdesignicons.com 拥有所有图标等等
    猜你喜欢
    • 2011-11-16
    • 2018-09-07
    • 1970-01-01
    • 2015-10-04
    • 2015-04-06
    • 1970-01-01
    • 2011-09-09
    • 2019-08-05
    • 2014-09-25
    相关资源
    最近更新 更多