Wednesday, June 03, 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>sample1107(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 画像サイズ */
$sx=200;
$sy=200;
/* 放射ストライプの中心 */
$cx=70;
$cy=150;
/* ストライプ数 */
$rays=24;
$sr=360/$rays;
/* 背景色 */
$bc="white";
/* ストライプ色 */
$sc="#99bbff";

$im = new Imagick();
$im->newImage($sx, $sy, $bc);
$idraw = new ImagickDraw();
$idraw->setFillColor($sc);
for($lc=0;$lc<$rays;$lc++){
$points[] = array(
'x' => $cx, 'y' => $cy);
$points[] = array(
'x' => $cx+cos(pi()*$sr*$lc/180)*$sx,
'y' => $cy+sin(pi()*$sr*$lc/180)*$sy);
$points[] = array(
'x' => $cx+cos(pi()*($sr*$lc+$sr/2)/180)*$sx,
'y' => $cy+sin(pi()*($sr*$lc+$sr/2)/180)*$sy);
$idraw->polygon($points);
}
$im->drawImage($idraw);
$im->writeImage('sample1107a.png');
$idraw->destroy();
$im->destroy();
?>
<img src="sample1107a.png" /><br />

</body>
</html>


出力画像(sample1107a.png)
Imagickで描画した放射ストライプ

No comments: