Sunday, June 08, 2008

ImageMagickとPHPで文字列を画像で塗りつぶす

Imagickで文字列を画像で塗りつぶすには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample412</title>
</head>
<body>
<?php
/* Patternを作成 */
$im = new Imagick('pattern1.gif');
$idraw = new ImagickDraw();
$idraw->pushPattern('tile', 0, 0, $im->getImageWidth(), $im->getImageHeight());
$idraw->composite(Imagick::COMPOSITE_DEFAULT, 0, 0, $im->getImageWidth(), $im->getImageHeight(), $im);
$idraw->popPattern();
/* 作成したパターンを使用する */
$idraw->setFillPatternURL('#tile');
/* フォント設定 */
$idraw->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw->setFontSize(60);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
/* 文字列描画 */
$idraw->annotation(0, 0, "Sample");
/* 背景用のイメージを作成 */
$im2 = new Imagick();
$im2->newImage(240, 80, '#fadf69');
$im2->drawImage($idraw);
$im2->writeImage('sample412a.jpg');
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();

?>

<img src="sample412a.jpg" />

</body>
</html>

パターン画像()


出力画像()


関連項目
ImageMagickで文字列を画像で塗りつぶすには (Convertコマンドによる同様の処理)

No comments: