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:
Post a Comment