Monday, November 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>sample662(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* ぼんやりと青白く輝く文字列を描画する */
$im = new Imagick();
$im->newImage(300, 100, 'none');
$im->setImageMatte(true);
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Times-New-Roman-Bold');
/* フォントサイズ設定 */
$idraw->setFontSize(48);
/* 塗りつぶし色設定 */
$idraw->setFillColor('white');
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$idraw->setStrokeAntialias(false);
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");
$im->blurImage(0, 2, Imagick::CHANNEL_ALPHA);
$im->normalizeImage();

$im2 = new Imagick();
$im2->newImage(300, 100, 'none');
$im2->setImageMatte(true);
$idraw2 = new ImagickDraw();
/* フォント設定 */
$idraw2->setFont('Times-New-Roman-Bold');
/* フォントサイズ設定 */
$idraw2->setFontSize(48);
/* 塗りつぶし色設定 */
$idraw2->setFillColor('#1F77D2');
$idraw2->setStrokeColor('#1F77D2');
$idraw2->setStrokeWidth(2);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_CENTER);
$im2->annotateImage($idraw2, 0, 0, 0, "ImageMagick");
$im2->blurImage(0, 5, Imagick::CHANNEL_ALL);
$idraw2->setStrokeWidth(1);
$im2->annotateImage($idraw2, 0, 0, 0, "ImageMagick");

$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im2->writeImage('sample662a.png');

/* 黒背景 */
$im3 = new Imagick();
$im3->newImage(300, 100, 'black');
$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im3->writeImage('sample662b.png');

$idraw2->destroy();
$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample662a.png" />
<img src="sample662b.png" />

</body>
</html>

出力画像1(sample662a.png):透過PNG


出力画像2(sample662b.png):黒背景との重ね合わせ


関連項目
ImageMagickとPHPで半透明のぼけた矩形の上に文字列を描画する
ImageMagickとPHPで半透明のぼかし文字列を描画する

No comments: