Вопрос по svg – SVG в PNG Преобразование с ImageMagick не обрабатывает def?

2

Ответ на ответ, который я пометил, но в комментариях. В основном, смотрите здесь:http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=18816

Запустите это на Mac с портами:

sudo port install ImageMagick +rsvg

Вот мой оригинальный вопрос:

Мой файл test.svg находится здесь:https://gist.github.com/2727243

Версия Imagemagick: ImageMagick 6.7.6-9 2012-05-18 Q16 (только что обновлена сегодня)

У меня есть файл SVG, который делает определения - & gt; символ для определения символа стрелки. Позже в документе я делаю ссылку: используйте этот символ. Это прекрасно работает в Chrome, и стрелка поднимается и находится в правильном положении:

enter image description here

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

convert test.svg test.png

Это не работает. Вот что я получаю:

enter image description here

& Quot; использовать & quot; кажется, полностью игнорируется, и вместо этого стрелка рендеринга в def. По крайней мере, насколько я могу судить.

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

Я также попробовал SVG здесь:http://www.carto.net/svg/samples/symbol.svg и символы НЕ работали. Поэтому я склоняюсь к тому, что Imagemagick является виновником.

ОБНОВЛЕНИЕ: я попытался изменить определение на следующее:

<symbol id="arrow" x="25">

В браузере стрелка перемещается на 25 вправо, но в Imagemagick она придерживается (0,0). Это привело меня к мысли, что речь идет не столько об определении символа, сколько о его неправильном переводе. Тем не менее, даже если я попытаюсь выполнить прямое преобразование на «use» и, что еще лучше, удалите & quot; использовать & quot; полностью, стрелка все еще появляется.

К сожалению, я должен сделать это с ImageMagick. В действительности это будет использоваться с RMagick (интерфейс Rails к IM) и будет выполняться на стороне сервера в Heroku. И я не думаю, что у меня есть другой вариант. Dave Sanders
Швы похожи на ошибку :( Но обходной путь - использовать Inkscape вместо того, чтобы использовать швы для правильной визуализации SVG. Inkscape поддерживает преобразование в PNG из командной строки, если это то, что вы ищете. Mattias Wadman

Ваш Ответ

2   ответа
0

Можете ли вы дать более подробную информацию о том, почему выhave использовать IM? Если окажется, что IM бесполезен в этом случае, наверняка вам придется использовать что-то еще? Я второй Inkscape для этого.

Тем не менее, возможно, вы все еще можете использовать IM, если вы хотите сделать некоторые манипуляции с XML. Я предполагаю, что содержимое символа может быть скопировано в их<use> локации индивидуально; Это грязный обходной путь, если у вас много вариантов использования одного и того же символа, но если вы хотите придерживаться IM, это может быть вашим единственным выходом из положения. Я работаю над теорией, что это система символов, которая вводит в заблуждение IM - если путь является «встроенным». это может быть хорошо.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Dave Sanders
Error: User Rate Limit Exceeded Dave Sanders
2

Update: Это похоже на ошибку в стандартном рендере SVG в ImageMagick, который игнорируетx а такжеy наuse теги (а также игнорирует атрибуты преобразования наg теги). Попробуйте использовать бэкэнд rsvg.

Это работает, если вы измените:

<use xlink:href="#arrow" x="20" y="50"></use>

Для того, чтобы:

<g transform="translate(20 50)">
  <use xlink:href="#arrow"></use>
</g>
Error: User Rate Limit Exceeded Dave Sanders
Error: User Rate Limit Exceeded Dave Sanders
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededthis thread about the issueError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Dave Sanders

Похожие вопросы