imagickでテキストを書く実験。本当に資料がなくて困る・・・。なんとなくやってる間に分かってきたけど・・・。



今日の実験、前回の記事では四角形をつくったので、そこに各辺(たて・よこ)の長さの注釈を入れてみる。

<?php

//四角形用
$draw = new ImagickDraw();
$draw->line( 0, 0, 250, 0);#上の辺
$draw->line( 250, 0, 250, 120);#右の辺
$draw->line( 250, 120, 0, 120);#下の辺
$draw->line( 0, 120, 0, 0)#左の辺

//ヨコの辺の注釈
$draw2 = new ImagickDraw();
$draw2->setFont('./Justus-Versalitas.ttf');#フォント指定
$draw2->setFontSize(11);#フォントサイズ指定
$draw2->setFillColor('#000000');#フォントカラー
$draw2->setTextAlignment( imagick::ALIGN_CENTER );#センター寄せ
$draw2->annotation(125, 12 , '250');#テキスト書き込み(x位置,y位置,テキスト)

//タテの辺の注釈用
$draw3 = new ImagickDraw();
$draw3->setFont('./Justus-Versalitas.ttf');
$draw3->setFontSize(11);
$draw3->setFillColor('#000000');
$draw3->translate( 253, 60 );#指定の座標へ移動させる(x位置,y位置)
$draw3->rotate(90);#90度回転
$draw3->setTextAlignment( imagick::ALIGN_CENTER );#センター寄せ
$draw3->annotation(0, 0 , '120');#テキスト書き込み(x位置,y位置,テキスト)

//Imagickオブジェクト
#参考http://labs.unoh.net/2009/05/imagemagick.html
$image = new Imagick();
$image->newImage( 264, 122, new ImagickPixel('#FFFFFF'));
##$image->setPage( 300, 300, 0, 0);
#$image->spliceImage( 300, 300, 0, 0);
#$image->setImagePage( 300, 300, 0, 0);
#$image->setFormat('gif');
$image->setImageFormat('gif');
#$image->setResolution( 300, 300 );
$image->drawImage( $draw );
$image->drawImage( $draw2 );
$image->drawImage( $draw3 );

header('Content-type: image/gif');
echo( $image->getimageblob() );
#$image->setImageFormat('jpeg');
# $img->writeImage('test.jpg');
$image->destroy();
$draw->destroy();
$draw2->destroy();
$draw3->destroy();

一度やってしまえば案外簡単。
簡単な図形くらいはどうにかなりそう。

GUI環境がインストールしてあるOS環境なら、setFont()はいらないっぽい。

CUI環境のみの場合、setFont()で使うフォントは、スクリプトと同ディレクトリに使うフォントを入れておく必要があるらしい。(フリーフォント探すのが面倒だ!)

※※余計なコメント行がたくさんありますが、色々実験した痕跡なので無視してくださいな。