PHP+ImagickでSVGを画像変換してみるまでの流れをまとめておきます。
実行環境はCentOS 6.2です。
手順
peclインストール
[shell]
# yum -y install php-pecl
[/shell]
ImageMagick、iMagickインストール
[shell]
# yum -y install ImageMagick ImageMagick-devel
# pecl install imagick
# echo "extension=imagick.so" > /etc/php.d/imagick.ini
[/shell]
日本語フォントにTakaoゴシックを使う。
Takao Fonts https://launchpad.net/takao-fonts
上記URLからダウンロードしたフォントを、/usr/share/fonts/takao-gothic/TakaoGothic.ttf に配置。
ImageMagickでフォントマッピング設定
[shell]
# vi /usr/lib64/ImageMagick-6.5.4/config/type.xml
<include file="type-truetype.xml"/> 行を追加
# vi /usr/lib64/ImageMagick-6.5.4/config/type-truetype.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE typemap [
<!ELEMENT typemap (type)+>
<!ELEMENT type (#PCDATA)>
<!ELEMENT include (#PCDATA)>
<!ATTLIST type name CDATA #REQUIRED>
<!ATTLIST type fullname CDATA #IMPLIED>
<!ATTLIST type family CDATA #IMPLIED>
<!ATTLIST type foundry CDATA #IMPLIED>
<!ATTLIST type weight CDATA #IMPLIED>
<!ATTLIST type style CDATA #IMPLIED>
<!ATTLIST type stretch CDATA #IMPLIED>
<!ATTLIST type format CDATA #IMPLIED>
<!ATTLIST type metrics CDATA #IMPLIED>
<!ATTLIST type glyphs CDATA #REQUIRED>
<!ATTLIST type version CDATA #IMPLIED>
<!ATTLIST include file CDATA #REQUIRED>
]>
<typemap>
<type name="TakaoGothic" fullname="TakaoGothic" family="TakaoGothic" weight="400" style="normal" stretch="normal" glyphs="/usr/share/fonts/takao-gothic/TakaoGothic.ttf"/>
</typemap>
[/shell]
sample.svg作成
[xml]
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200" height="200">
<text x="0" y="20" font-size="24" font-family="TakaoGothic">Takaoゴシックです</text>
<rect x="10" y="40" height="30" width="30" stroke-width="5" stroke="#000000" fill="#0000ff"/>
<ellipse cx="25" cy="100" ry="15" rx="15" stroke-width="5" stroke="#000000" fill="#ff0000"/>
</svg>
[/xml]
sample.php作成
[php]
<?php
$im = new Imagick();
$svg = file_get_contents("sample.svg");
$im->readImageBlob($svg);
$im->setImageFormat("png24");
header("Content-Type: image/png");
echo $im;
[/php]
というわけで、sample.php を実行するとこんな感じで変換された画像ができ上がりました。