Wednesday, December 10, 2008

ImageMagickとPHPで画像に半透明ガラスの枠をつける

ImageMagickとPHPで画像に半透明ガラスの枠をつけるには、以下のコードを実行します。


<!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>sample707(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像に半透明ガラス枠をつける */
$dx = 15;
$dy = 15;

$im = new Imagick("sf.jpg");
$ox = $im->getImageWidth();
$oy = $im->getImageHeight();
/* 画像をリサイズ */
$im->resizeImage(
$ox+$dx*2, $oy+$dy*2,
imagick::FILTER_MITCHELL, 1, false);
/* ちょっと暗めに */
$im2 = $im->fxImage("p*0.8");
/* 黒色の枠をつける */
$im2->borderImage('#000000', $dx, $dy);

$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#ffffff');
$idraw->rectangle($dx*2, $dy*2,
$ox+$dx*2-1, $oy+$dy*2-1);
$im2->drawImage($idraw);
/* ぼかす */
$im2->blurImage(0,2);
/* 切り取り */
$im2->cropImage($ox+$dx*2, $oy+$dy*2, $dx, $dy);
/* 重ね合わせ */
$im3 = new Imagick("sf.jpg");
$im2->compositeImage($im3,
Imagick::COMPOSITE_DEFAULT, $dx, $dy);
$im2->writeImage('sample707a.png');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample707a.png)


関連項目
ImageMagickで画像に半透明ガラス枠をつける (Convertコマンドによる同様の処理)

No comments: