動かざることバグの如し

近づきたいよ 君の理想に

ImageMagickでSVGをPNGに変換するとエラーになる話

環境

SVGPNG

手元にsvgファイルが有って

convert example.svg -resize 300x400 example.png

ってやっても

convert: non-conforming drawing primitive definition `Segoe' @ error/draw.c/DrawImage/3259.

って言われる。誰だよSegoeって

原因

MacImageMagickHomebrew経由でインストールしたのだが、そのImageMagickSVGに対応していなかった。。。librsvg2対応のImageMagickでないと変換出来ない

ターミナルでconvert -versionすると対応しているライブラリ一覧が表示される。

普通にインストールした場合。これでは変換できない。

$convert -version
Version: ImageMagick 6.9.7-3 Q16 x86_64 2017-03-27 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules 
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib

対応している場合 rsvgというのがある

$convert -v
Version: ImageMagick 6.9.9-38 Q16 x86_64 2018-03-17 http://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules 
Delegates (built-in): bzlib cairo fontconfig freetype jng jpeg ltdl lzma png rsvg tiff xml zlib

解決方法

rsvg対応のImageMagickを再インストールすればよい

いったんアンインストールして

brew install imagemagick

--with-librsvgつけて再インストール

brew install imagemagick --with-librsvg

バージョン6でインストールする場合は

brew install imagemagick@6 --with-librsvg

これでいける