Как преобразовать изображение JPEG в формат SVG с помощью ImageMagick? - PullRequest
27 голосов
/ 15 июля 2009

Как преобразовать изображение JPEG в формат SVG с помощью ImageMagick?

Ответы [ 3 ]

40 голосов
/ 26 сентября 2012

вам нужно будет использовать potrace и сначала преобразовать в растровое изображение.

$convert input.jpg output.ppm
$potrace -s output.ppm -o svgout.svg
27 голосов
/ 26 сентября 2012

На самом деле, с полной установкой последней версии ImageMagick это должно быть так же просто, как:

convert  some.jpeg  some.svg

Конечно, ImageMagick не может сделать все сам по себе - он использует делегатов (вспомогательные программы) для обработки ввода или вывода SVG. (Об этом уже говорили другие ответы.)

Чтобы просмотреть (частичный) список всех делегатов (и их соответствующих команд), введите

convert  -list delegate

Чтобы увидеть файл конфигурации, в котором скрыты все секреты делегатов, см.

convert  -list delegate | grep delegates.xml

Чтобы увидеть (частичный) список делегатов обработки SVG, выполните

convert  -list delegate | grep -i svg

Однако ImageMagick любит переводить некоторые из своих внешних вспомогательных утилит в режим «невидимости» и не обязательно обнаруживает их присутствие при использовании вышеуказанных команд.

Просто посмотрите на сам файл delegates.xml. В моей системе это:

grep -i svg /opt/local/etc/ImageMagick/delegates.xml | grep -i --color stealth

  <delegate decode="autotrace" stealth="True" \
            command="&quot;/opt/local/bin/convert&quot; &quot;%i&quot; \
            &quot;pnm:%u&quot;\n\
            &quot;/opt/local/bin/autotrace&quot; \
           -input-format pnm \
           -output-format svg \
           -output-file &quot;%o&quot; &quot;%u&quot;"/>

  <delegate decode="svg:decode" stealth="True" \
            command="&quot;/opt/local/bin/inkscape&quot; &quot;%s&quot; \
            --export-png=&quot;%s&quot; \
            --export-dpi=&quot;%s&quot; \
            --export-background=&quot;%s&quot; \
            --export-background-opacity=&quot;%s&quot; \
            &gt; &quot;%s&quot; 2&gt;&amp;1"/>

Как вы можете видеть, в моей системе установка ImageMagick автоматически использует (среди прочего) ...

  • ... inkscape для преобразования SVG в PNG;
  • ... autotrace для преобразования PNM в SVG;

Конечно, можно поспорить о преимуществах непосредственного использования autotrace, но для этого потребуется сначала вручную преобразовать любой формат ввода в PNM. Так что для этого предварительного шага вы, вероятно, все равно будете использовать ImageMagick ...

16 голосов
/ 15 июля 2009

На самом деле вам понадобится некоторое программное обеспечение или код для векторизации вашего изображения между ними, поскольку jpg - это растровый формат, а SVG - векторный формат. Я не думаю, что один имиджмэджик может сделать это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...