import java.awt.*;
import magick.*;
public class JMagickTest40
{
   public static void main(String args[])
       throws MagickException
   {
       /* 画像の指定した点から円形のバンド状に明るさを変える */
       /* 円の中心 */
       int cx = 130;
       int cy = 160;
       /* 半径初期値 */
       int ir = 30;
       /* 半径増分値 */
       int dr = 20;
       /* 明るさ */
       int il = 100;
       /* 明るさ増分値 */
       int dl = -10;
       /* 繰り返し回数 */
       int ct = 8;
       /* 読み込み画像名 */
       String fn = "sf.jpg";
       MagickImage images[] = new MagickImage[ct+1];
       images[0] = new MagickImage(new ImageInfo(fn));
       int w = (int)images[0].getDimension().getWidth();
       int h = (int)images[0].getDimension().getHeight();
       int lc = 0;
       for(lc=ct;lc>=1;lc--){
           MagickImage mi = new MagickImage(new ImageInfo(fn));
           /* 円形に切り取るマスクを作成 */
           ImageInfo ii = new ImageInfo("xc:none");
           ii.setSize(w + "x" + h);
           DrawInfo di = new DrawInfo(ii);
           di.setFill(PixelPacket.queryColorDatabase("white"));
           di.setPrimitive("ellipse " + cx + "," + cy + "," +
               ir + "," + ir + ",0,360");
           images[lc] = new MagickImage(ii);
           images[lc].drawImage(di);
           /* マスクを使用して切り取り */
           images[lc].compositeImage(CompositeOperator.SrcInCompositeOp,
               mi,0,0);
           images[lc].modulateImage(il + ",100,100");
           ir += dr;
           il += dl;
       }
       images[0].modulateImage(il + ",100,100");
       /* すべてのイメージを重ね合わせ */
       for(lc=1;lc<=ct;lc++){
           images[0].compositeImage(CompositeOperator.SrcOverCompositeOp,
               images[lc], 0, 0);
       }
       images[0].setFileName("sample492a.jpg");
       images[0].writeImage(new ImageInfo());
   }
}
元画像(sf.jpg)
出力画像(sample492a.jpg)

環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16
関連情報
JMagickまとめ
JMagickで、明度・彩度・色相を変更する
 
No comments:
Post a Comment