Thursday, May 14, 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>sample1091(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageHeight();

$im2 = new Imagick();
$im2->newPseudoImage($iw, $ih, "xc:none");

$idraw = new ImagickDraw();
$idraw->setFillColor("white");
$idraw->ellipse(100,80,50,30,0,360);
$polygon[] = array('x' => 80, 'y' => 100);
$polygon[] = array('x' => 90, 'y' => 120);
$polygon[] = array('x' => 90, 'y' => 100);
$idraw->polygon($polygon);
$im2->drawImage($idraw);
$im2->shadeImage(true, 135, 23);
$im2->blurImage(0, 2, Imagick::CHANNEL_RED +
Imagick::CHANNEL_GREEN +
Imagick::CHANNEL_BLUE);
$im2->normalizeImage(Imagick::CHANNEL_RED +
Imagick::CHANNEL_GREEN +
Imagick::CHANNEL_BLUE);
$im2->setImageMatte(true);

$idraw2 = new ImagickDraw();
$idraw2->setFillColor("white");
/* フォント設定 */
$idraw2->setFont('Tahoma');
/* フォントサイズ設定 */
$idraw2->setFontSize(14);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_NORTHWEST);
/* 文字列描画 */
$idraw2->annotation(60, 75, "San Francisco");
$im->drawImage($idraw2);

$im->compositeImage($im2, Imagick::COMPOSITE_OVERLAY,
0, 0, Imagick::CHANNEL_ALL);

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

</body>
</html>


元画像(sf.jpg)


出力画像(sample1091a.png)
Imagickで立体的な吹き出しを描画した画像

関連項目
ImageMagickで立体的な吹き出しを描画する

No comments: