Wednesday, February 04, 2009

ImageMagickとPHPで不規則な波線を描画する

ImagickでPで不規則な波線を描画するには、以下のコードを実行します。


<!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>sample765(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 座標を少しずつずらして、複数のベジェ曲線を描画 */

/* 中央y座標 */
$cy = 25;
/* 繰り返し数 */
$ct=4;
/* 線の色 */
$sc='#88bbff';
/* x座標の揺らぎ最小値 */
$mindx = -5;
/* y座標の揺らぎ最大値 */
$maxdx = 5;
/* y座標の揺らぎ最小値 */
$mindy = -5;
/* y座標の揺らぎ最大値 */
$maxdy = 5;
/* 振幅 */
$dy = 15;
$dx = 20;

$im = new Imagick();
$im->newPseudoImage(300, 50, "xc:none");

$idraw = new ImagickDraw();
$idraw->setStrokeColor($sc);
$idraw->setStrokeWidth(3);
$idraw->setFillColor('none');

$lx = 0;

for($ind=0;$ind<$ct;$ind++){
$points[] = array(
'x' => $lx,
'y' => $cy
);
$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy-$dy
);
$points[] = array(
'x' => $lx+rand($mindx,$maxdx),
'y' => $cy-$dy+rand($mindy, $maxdy)
);

$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy
);

$idraw->bezier($points);
$points = null;



$points[] = array(
'x' => $lx,
'y' => $cy
);
$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy+$dy
);
$points[] = array(
'x' => $lx+rand($mindx,$maxdx),
'y' => $cy+$dy+rand($mindy, $maxdy)
);

$lx += $dx;
$points[] = array(
'x' => $lx,
'y' => $cy
);
$idraw->bezier($points);
$points = null;

}

$im->drawImage($idraw);
$im->blurImage(0,3);

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

</body>
</html>


出力画像(sample765a.png)


関連項目
ImageMagickとPHPで3色モノトーンの角丸四角画像に変換する
ImageMagickとPHPで複数の画像の境界をぼかして連結する

No comments: