Wednesday, January 28, 2009

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>sample742(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像で黄色っぽいところ以外を白黒にして、黄色部分をにじませる */
$im = new Imagick("sf.jpg");
$im->modulateImage(80, 20, 100);
$im2 = new Imagick("sf.jpg");
$im2->setImageMatte(true);
$im3 = $im2->fxImage("(hue>0.11&&hue<0.19&&intensity<0.93&&saturation>0.5)?1:0", Imagick::CHANNEL_ALPHA);
$im3->modulateImage(100, 150, 100);
$im4 = new Imagick("sf.jpg");
$im4->setImageMatte(true);
$im5 = $im4->fxImage("(hue>0.11&&hue<0.19&&intensity<0.93&&saturation>0.5)?0.9:0", Imagick::CHANNEL_ALPHA);
$im5->blurImage(5,10,Imagick::CHANNEL_ALL);

$im->compositeImage($im3, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im->compositeImage($im5, Imagick::COMPOSITE_DEFAULT, 0, 0);

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample742a.png)


関連項目
ImageMagickとPHPで複数の画像の境界をぼかして連結する
ImageMagickとPHPで画像をグレースケールの立体的な角丸四角に変換する
ImageMagickで黄色だけを強調してにじませる (convertコマンドによる同様の処理)

No comments: