Sunday, January 04, 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>sample734(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 手でちぎったように画像を切り取る */
$im = new Imagick('sf.jpg');

$px = 5;
$py = 5;
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor('white');
$idraw->rectangle($px, $py, $im->getImageWidth()-$px, $im->getImageHeight()-$py);
$im2->drawImage($idraw);
$im2->spreadImage(6);
$im2->medianFilterImage(3);
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im2->writeImage('sample734a.png');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample734a.png)


関連項目
ImageMagickで手で切り取ったように不規則に画像を切り取る (convertコマンドでの同様の処理)

No comments: