Wednesday, January 07, 2009

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>sample735(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 円形のドット文字列を描画する */
/* 円形ドットのパターンを作成する */
$im = new Imagick();
$im->newImage(10, 10, "none");
$im->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->pushPattern('ellipse', 0, 0, 10, 10);
$idraw->setFillColor('white');
$idraw->ellipse(5, 5, 4, 4, 0,360);
$idraw->popPattern();
$idraw->setFillPatternUrl('#ellipse');
$idraw->rectangle(0, 0, 450, 120);

$im2 = new Imagick();
$im2->newImage(450, 120, "none");
$im2->drawImage($idraw);

/* 文字列を描画 */
$im3 = new Imagick();
$im3->newImage(45, 12, 'none');
$idraw2 = new ImagickDraw();
$idraw2->setFillColor('#bbddff');
/* フォント設定 */
$idraw2->setFont('Bitstream-Vera-Sans');
/* フォントサイズ設定 */
$idraw2->setFontSize(9);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_NORTH);
/* antialiasをoff*/
$idraw2->setStrokeAntialias(false);
/* 文字列描画 */
$idraw2->annotation(0, 0, "Sample");
$im3->drawImage($idraw2);

/* FILTER_POINTを使用してリサイズ */
$im3->resizeImage(450, 120, Imagick::FILTER_POINT, 1, false);

/* 円形ドットで文字列を切り取り */
$im2->compositeImage($im3, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);


$im2->writeImage('sample735a.png');

$idraw2->destroy();
$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample735a.png" />

</body>
</html>

出力画像(sample735a.png)


関連項目
ImageMagickとPHPで画像の上に半透明の荒いドットの文字列を描画する
ImageMagickとPHPで半透明の吹き出しを描画する
ImageMagickとPHPで青白く輝く文字列を描画する

No comments: