Friday, October 03, 2008

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>sample642(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像に半透明のぼけた矩形を描画してその上に文字列を描画する */
$im = new Imagick("sf.jpg");
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#ffffffa0');
$idraw->rectangle(50, 50, 150, 150);
$im2->drawImage($idraw);
$im2->blurImage(10, 10, Imagick::CHANNEL_ALL);
/* 重ね合わせ */
$im->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$idraw2 = new ImagickDraw();
/* フォント設定 */
$idraw2->setFont("Comic-Sans-MS-Bold");
/* フォントサイズ設定 */
$idraw2->setFontSize(20);
/* 塗りつぶし色設定 */
$idraw2->setFillColor('#808080ff');
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_CENTER);
$im->annotateImage($idraw2, 0, 0, 0, "Sample");
$im->drawImage($idraw2);


$im->writeImage('sample642a.jpg');

$im2->destroy();
$im->destroy();
?>
<img src="sample642a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample642a.jpg)


関連項目
ImageMagickで半透明のぼかし四角形と文字列を重ね合わせる

No comments: