Tuesday, June 09, 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>sample1110(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 画像サイズ */
$iw=200;
$ih=200;
/* 吹き出し左上 */
$bx=25;
$by=25;
/* 吹き出しサイズ */
$bw=150;
$bh=150;
/* 角丸と吹き出し線 */
$rx=20;
$ry=20;
/* 背景色 */
$bc="none";
/* 塗りつぶし色 */
$fc="skyblue";
/* ストローク色 */
$sc="darkblue";
/* ストローク幅 */
$lw=2;

$im = new Imagick();
$im->newImage($iw, $ih, $bc);
$idraw = new ImagickDraw();
$idraw->setFillColor($fc);
$idraw->setStrokeColor($sc);
$idraw->setStrokeWidth($lw);
$idraw->pathStart();
/* 左上の角丸 */
$idraw->pathMoveToAbsolute(
$bx, $by+$ry);
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$rx, $by);
/* 上側の線 */
$idraw->pathLineToAbsolute(
$bx+$bw-$rx-1, $by);
/* 右上の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$bw-1, $by+$ry);
/* 右側の線 */
$idraw->pathLineToAbsolute(
$bx+$bw-1, $by+$bh-$ry-1);
/* 右下の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true,
$bx+$bw-$rx-1, $by+$bh-1);
/* 下側の線 */
$idraw->pathLineToAbsolute(
$bx+$rx, $by+$bh-1);
/* 左下の曲線 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, false,
$bx, $by+$bh+$ry-1);
$idraw->pathClose();

$im->drawImage($idraw);
$im->writeImage('sample1110a.png');
$im->destroy();
?>
<img src="sample1110a.png" /><br />

</body>
</html>


出力画像(sample1110a.png)
Imagickで描画した吹き出し

関連項目
ImageMagickとPHPで立体的な吹き出しを描画する
ImageMagickとPHPで半透明の吹き出しを描画する

No comments: