PHP+ImagickでSVGを画像変換する手順まとめ

PHP+ImagickでSVGを画像変換してみるまでの流れをまとめておきます。

実行環境はCentOS 6.2です。

手順

peclインストール

# yum -y install php-pecl

ImageMagick、iMagickインストール

# yum -y install ImageMagick ImageMagick-devel
# pecl install imagick
# echo "extension=imagick.so" > /etc/php.d/imagick.ini

日本語フォントにTakaoゴシックを使う。
Takao Fonts https://launchpad.net/takao-fonts
上記URLからダウンロードしたフォントを、/usr/share/fonts/takao-gothic/TakaoGothic.ttf に配置。

ImageMagickでフォントマッピング設定

# 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>

sample.svg作成

<?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>

sample.php作成

<?php
$im = new Imagick();
$svg = file_get_contents("sample.svg");
$im->readImageBlob($svg);
$im->setImageFormat("png24");
header("Content-Type: image/png");
echo $im;

というわけで、sample.php を実行するとこんな感じで変換された画像ができ上がりました。

svg

PHPが好きなWeb系エンジニアです。フリーランスでWebサイト制作やWordPressのカスタマイズ、システム開発等を雑多にこなしています。バンカラ応援好きの振り飛車党。 高校野球 / 将棋 / WordPress / ブログ / 食べること / 二児の父親 >>詳しいプロフィールはこちら