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

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 を実行するとこんな感じで変換された画像ができ上がりました。

svg

この記事を書いた人

ko31

岩手県出身、群馬県在住のフリーランスWeb系エンジニアです。
Webシステム・アプリ、Webサービス、WordPress開発等を雑多にこなしています。バンカラ応援好きの振り飛車党。
PHP / WordPress / 高校野球 / 将棋 / WordPress / ブログ / 食べること / 二児の父親

>>もっと詳しいプロフィールはこちら

お仕事のご相談・お問い合わせ

当ブログの管理人は、Gosign(ゴーサイン)という屋号でフリーランス Web エンジニアとして活動しています。
ブログの掲載内容はもちろん、Web サイト制作や Web アプリケーション開発などのご相談・ご質問がありましたら、どうぞお気軽にお問い合わせください!

合わせて読みたい記事