Конвертировать SVG в PNG imagemagick черной рамкой вокруг пути - PullRequest
1 голос
/ 27 марта 2019

Я в MacOs Mojave 10.14.3 (18D109)

Мои данные imagemagick (установлены вместе с brew)

convert -version
Version: ImageMagick 7.0.8-35 Q16 x86_64 2019-03-25 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP 
Delegates (built-in): bzlib freetype heic jng jp2 jpeg lcms ltdl lzma openexr png tiff webp xml zlib

У меня есть базовый svg (взят из примера W3Schools):

<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 52 52">
  <path fill="#fff" d="M22 0 L33 52 L12 42 Z">
</path>
</svg>

Это выглядит так (Гапплин):

Gapplin view

Теперь, когда я конвертирую его в png, вот так:

convert -background none -density 9600 -resize 32x "myFile.svg" "myFile.png"

я получаю идеальное изображение, за исключением того, что оно имеет черную рамку:

after conversion

Я испробовал практически все варианты параметров команды дляimagemagick, который имел отношение к color или black, и, к сожалению, он никогда не выходит с тем, что я хочу - прозрачный фон, сплошной белый путь (как описано в заливке в SVG).

Есть предложения?

1 Ответ

0 голосов
/ 27 марта 2019

В ImageMagick SVG-файлы могут отображаться любым из трех инструментов: MSVG / XML, делегата RSVG и Inkscape от Imagemagick, обычно в порядке повышения точности.

Я только что попробовал следующую команду с Inkscape 0,92.4 и получается абсолютно белый.Если Inkscape установлен, Imagemagick будет использовать его автоматически.Но в этом случае он плохо работает с этим файлом.

magick test.svg test2.png


Но он работает нормально, если я добавил -background none

magick -background none test.svg test2.png


Я получаюбелый треугольник на прозрачном фоне.

или если я хочу черный фон

magick -background black test.svg test2.png


Когда я заставляю Imagemagick использовать MSVG, я получаю белый треугольник с простым черным контуромна белом фоне.Поэтому, опять же, ваши комментарии не верны.

magick MSVG:test.svg test2.png


Если я добавлю -background none, то получу белый треугольник с черным контуром на прозрачном фоне.

magick -background none MSVG:test.svg test2.png


Но если я просто хочу черный фон, то

magick -background black MSVG:test.svg test2.png


Затем я получаю белый треугольник на черном фоне.Но я подозреваю, что белый треугольник немного меньше черной границы.

Когда я принудительно использую RSVG 2.44.12 путем создания записи в файле Delegates.xml, я получаю белый треугольник напрозрачный фон, который, как я полагаю, вам нужен.

magick RSVG:test.svg test3.png


или

magick -background none RSVG:test.svg test3.png


Вы можете определить, имеет ли ваш Imagemagick MSVG / XML или RSVG с помощью

magick -list format


и найдите строку, начинающуюся с SVG.В конце этой строки будет либо XML, либо RSVG.Вы не можете рассказать об Inkscape этим методом.

Проверьте, что вы используете для рендерера SVG и его версию.Также версия libpng.У меня 1.6.36

Из твоей информации о версии я не вижу rsvp в списке.Поэтому я предполагаю, что вы используете MSVG, но это может быть Inkscape, если вы установили его в своей системе.

Я на Mac OSX Sierra с Imagemagick 7.0.8.35 Q16.

...