Thursday, May 28, 2009

ImageMagickとPHPで手書き風の円に囲まれた文字を描画する

Imagickで手書き風の円に囲まれた文字を描画するには、以下のコードを実行します。


<title>sample1100(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 表示文字列 */
$message_string = "ImageMagick";
/* 文字色 */
$fc = "#103070";
/* 円の色 */
$cc = "#bbddff";
/* ブロック幅・高さ */
$bw = 40;
$bh = 40;
/* 円半径サイズ */
$crx = 18;
$cry = 18;
/* 文字サイズ */
$ps = 25;

$images = new Imagick();
for($sl=0;$sl<strlen($message_string);$sl++){
$im = new Imagick();
$im->newPseudoImage($bw, $bh, "xc:none");
$idraw = new ImagickDraw();

/* 円描画 */
$idraw->setFillColor($cc);
$idraw->ellipse($bw/2, $bh/2, $crx,
$cry, 0, 360);

/* 文字色設定 */
$idraw->setFillColor($fc);
$im->drawImage($idraw);
/* フォント設定 */
$idraw->setFont('Tahoma-Bold');
/* フォントサイズ設定 */
$idraw->setFontSize($ps);
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw, 0, 0, 0,
substr($message_string,$sl,1));

$images->addImage($im);
$idraw->destroy();
$im->destroy();
}
$images->setImageIndex(0);
$im2 = $images->appendImages(false);
$im2->spreadImage(1);
$im2->medianFilterImage(1);

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

$images->destroy();
$im2->destroy();
?>
<img src="sample1100a.png" /><br />

</body>
</html>


出力画像(sample1100a.png)


関連項目
ImageMagickとPHPで手書き風の文字列をアニメーションGIFにする
ImageMagickとPHPで手塗り風の四角を描画する

No comments: