import java.awt.*;
import magick.*;
public class JMagickTest35
{
   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();
       int d = 10;
       ImageInfo ii = new ImageInfo("xc:black");
       ii.setSize(iw + "x" + ih);
       MagickImage mi1 = new MagickImage(ii);
       /* 枠描画 */
       mi1.setBorderColor(PixelPacket.queryColorDatabase("white"));
       MagickImage mi2 = mi1.borderImage(new Rectangle(d, d));
       /* ぼかして中央を透明に */
       int tw = iw+d*2;
       int th = ih+d*2;
       MagickImage mi3 = mi2.blurImage(0, 10);
       byte data[] = new byte[tw*th*4];
       mi3.dispatchImage(0, 0, tw, th, "RGBA", data);
       int ind = 0;
       for(ind=0;ind<tw*th*4;ind+=4){
           data[ind+3] = data[ind+0];
           data[ind] = (byte)0;
           data[ind+1] = (byte)0;
           data[ind+2] = (byte)0;
       }
       mi3.constituteImage(tw, th, "RGBA", data);
       /* 中央部分を切り取り */
       Rectangle rec = new Rectangle(d, d, iw+d-1, ih+d-1);
       MagickImage mi4 = mi3.cropImage(rec);
       /* 画像と重ね合わせ */
       mi.compositeImage(CompositeOperator.SrcOverCompositeOp,mi4,0,0);
       mi.setFileName("sample466a.jpg");
       mi.writeImage(new ImageInfo());
   }
}
元画像(sf.jpg)
出力画像(sample466a.jpg)

環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16
関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
 
No comments:
Post a Comment