Thursday, January 22, 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>sample740(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像をグレースケールの立体的な角丸四角に変換する */
/* 余白x */
$px=10;
/* 余白y */
$py=10;
/* 角丸x */
$rx=10;
/* 角丸y */
$ry=10;

$im = new Imagick("sf.jpg");
$im->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im->modulateImage(160, 100, 100);
/* マスク作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->roundrectangle($px, $py,
$im->getImageWidth()-$px-1, $im->getImageHeight()-$py-1, $rx, $ry);
$im2->drawImage($idraw);
$im3 = $im2->clone();
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
/* 立体的な角丸四角作成 */
$im3->shadeImage(false, 135, 23);
$im3->blurImage(0, 2, Imagick::CHANNEL_ALL);
$im3->normalizeImage(Imagick::CHANNEL_ALL);
$im3->compositeImage($im2, Imagick::COMPOSITE_OVERLAY, 0, 0, Imagick::CHANNEL_ALL);

$im3->writeImage('sample740a.png');
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample740a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample740a.png)


関連項目
ImageMagickで画像をグレースケールの立体的な角丸四角に変換する (convertコマンドによる同様の処理)
ImageMagickとPHPで手でちぎったように画像を切り取る
ImageMagickとPHPで画像の端がちぎれたようなスケッチ調の画像に変換する
ImageMagickとPHPで画像を角丸四角に切り取って文字入れする

No comments: