Tuesday, June 23, 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>sample1128(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageHeight();
$im2 = new Imagick();
$im2->newImage($iw, $ih, "none");
$im2->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor("blue");
$rx = $iw/2;
$ry = $ih/4;
$rw = $iw/2;
$rh = $ih/2;
$idraw->rectangle($rx,$ry,$rx+$rw,$ry+$rh);
$im2->drawImage($idraw);
$args1 = array($rx+$rw/2, $ry+$rh/2, 1, -30);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $args1, false);
// ScaleRotateTranslateDistortion in distort.h
$im2->distortImage(3, $args1, false);
$im2->blurImage(0, 10);
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);
$im2->writeImage('sample1128a.png');
$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1128a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample1128a.png)
Imagickで回転させたぼかし四角で切り取った画像
関連項目
ImageMagickとPHPで画像を回転させる - その2

No comments: