Sunday, June 29, 2008

JMagickでマスクした部分を白黒にする

JMagickでマスクした部分を白黒にするには、以下のコードを実行します。

import java.awt.*;
import magick.*;

public class JMagickTest39
{
public static void main(String args[])
throws MagickException
{
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
int iw = (int)mi.getDimension().getWidth();
int ih = (int)mi.getDimension().getHeight();

/* マスク画像で切り取り */
MagickImage mi2 = new MagickImage(new ImageInfo("mask.bmp"));
mi2.negateImage(1);
byte data[] = new byte[iw*ih*4];
mi2.dispatchImage(0, 0, iw, ih, "RGBA", data);
int ind = 0;
for(ind=0;ind<iw*ih*4;ind+=4){
/* alphaをredと同じ値に */
data[ind+3] = data[ind+0];
}
mi2.constituteImage(iw, ih, "RGBA", data);

mi2.compositeImage(CompositeOperator.SrcInCompositeOp,mi,0,0);
/* 元画像を白黒化 */
QuantizeInfo qi = new QuantizeInfo();
qi.setColorspace(ColorspaceType.GRAYColorspace);
mi.quantizeImage(qi);
mi.compositeImage(CompositeOperator.SrcOverCompositeOp,mi2,0,0);
mi.setFileName("sample480a.png");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


マスク画像(mask.bmp)


出力画像(sample480a.png)


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


関連情報
JMagickまとめ
ImageMagickで、マスクした部分を白黒に変換する (Convertコマンドで同様の処理)

No comments: