Friday, May 23, 2008

JMagickで画像の輪郭を影で浮かび上がらせた画像を生成する

JMagickで画像の輪郭を影で浮かび上がらせた画像を生成するには、以下のコードを実行します。

import magick.*;

public class JMagickTest31
{
public static void main(String args[])
throws MagickException
{
MagickImage mi = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi.thresholdImage(40000);
/* 白色を水色に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("white"),
new PixelPacket(0x30*256, 0x70*256, 0xa0*256, 0)
);
/* 黒色を白色に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("black"),
PixelPacket.queryColorDatabase("white")
);
/* ぼかし */
MagickImage mi2 = mi.blurImage(0, 3);

MagickImage mi3 = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi3.thresholdImage(40000);
/* 白色を透明に変換 */
mi3.opaqueImage(
PixelPacket.queryColorDatabase("white"),
new PixelPacket(65535, 65535, 65535, 65535)
);
/* 黒色を水色に変換 */
mi3.opaqueImage(
PixelPacket.queryColorDatabase("black"),
new PixelPacket(0x30*256, 0x70*256, 0xa0*256, 0)
);

mi2.compositeImage(CompositeOperator.SrcOverCompositeOp,mi3,0,0);

mi2.setFileName("sample451a.png");
mi2.writeImage(new ImageInfo());
}
}

元画像(tree1.jpg)


出力画像(sample451a.png)


環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16


関連情報
JMagickまとめ
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする
ImageMagickで、画像の輪郭を影で浮かび上がらせた画像を生成する (Convertコマンド)

No comments: