2

У меня есть значок 434 .svg. Я хотел бы подготовиться к их использованию в приложениях для Android. Поскольку, вероятно, было бы безумным экспортировать их все вручную с помощью Inkspace, я пытаюсь найти способ экспортировать их с помощью ImageMagick и тому подобного. Я попытался придумать сценарий для этого:Автоматически конвертировать SVG в Android-применимый PNG

#!/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, как к любому другому изображению. Кроме того, размеры все неправильные, так как почти ни один из полученных файлов не квадратный.

мне нужен какой-то способ, чтобы преобразовать SVGs с почти такими условиями:

  • Нет сглаживанием
  • Создать прямоугольное изображение с SVG рисунка в центре
  • Allow повторно -Цвет в полностью черный SVG изображение (по желанию)
  • с помощью командной строки Linux (Arch Linux)

для полного рассказа: Я пытаюсь получить значки для Material Design from Polymer, которые можно использовать в приложении.

ответ

3

Как и любой векторный формат, вы должны предоставить опцию -density с соответствующей настройкой DPI. Установка его выше 72 приведет к значительно лучшему разрешению. Попробуйте это

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

Он отлично работает, за исключением того, что команда должна быть 'convert', а не' im'. Большое спасибо! – Lanbo

+0

Извините за это - я использую сокращенную символическую ссылку. – rostok

+0

Вы можете опубликовать репозиторий github с созданными значками для android? @LambdaDusk – ClarkXP

Смежные вопросы