实现给图片加水印功能(jmagick实现,适用于windows系统)

 String bg_filename="d://temptest//bg.jpg";
  String original_filename_500 =null;
  String watermark_filename = "d://temptest//bokee.png";
  final int MARK_H=15; //水印的高
  final int NO_MARK=100;//图片的高或者宽
  final int BOKEE_MARK=200;//图片宽在200
  final int HAS_MARK=300;  //图片宽在300以上
  final int Y_FONT=10;
  try {
   for(int i=1;i<=18;i++){  //做实验的时候我循环了18张
    original_filename_500="d://temptest//"+i+".jpg";
    File file_500=null;
    Image img=null;
    MagickImage mi_wm=null;
    try{
     file_500=new File(original_filename_500);
     img = ImageIO.read(file_500);
    }catch(Exception e){
     System.out.println("can not open "+original_filename_500+"500's photo");
    }
    if(img!=null){
     int width = img.getWidth(null);
     int height = img.getHeight(null);
     if(width<=NO_MARK||height<=NO_MARK){
      System.out.println(original_filename_500+" no watermark");
     }else{
      ImgTools imag = new ImgTools(width, height+MARK_H, bg_filename);
      imag.MakeBigByJMagickGB(bg_filename);
      ImageInfo ii_orig = new ImageInfo();
      ii_orig.setFileName(bg_filename);
      MagickImage mi_orig = new MagickImage(ii_orig);
      ImageInfo ii_wm_500 = new ImageInfo();
      ii_wm_500.setFileName(original_filename_500);
      MagickImage mi_wm_500 = new MagickImage(ii_wm_500);
      mi_orig.compositeImage(CompositeOperator.AddCompositeOp,mi_wm_500, 0, 0);
      mi_orig.setMagick("JPG");
      mi_orig.setCompression(CompressionType.JPEGCompression);
      final ImageInfo ii_result = new ImageInfo();
      ii_result.setQuality(90);
      if(width<=BOKEE_MARK&&width>NO_MARK){
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       aInfo.setText("http://www.fiten.com");
       int X=(width-NO_MARK)/2;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }else if(width>BOKEE_MARK&&width<=HAS_MARK) {
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       String  domain="manzhouyexing02";
       aInfo.setText( http://www.fiten.com/);
       int X=(width-(110+(5*domain.length()-1)))/2;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }else if(width>HAS_MARK) {
       ImageInfo ii_wm = new ImageInfo();
       ii_wm.setFileName(watermark_filename);
       mi_wm = new MagickImage(ii_wm);
       mi_orig.compositeImage(CompositeOperator.AddCompositeOp,mi_wm, 1, height);
       DrawInfo aInfo = new DrawInfo(ii_orig);
       aInfo.setFill(PixelPacket.queryColorDatabase("gray"));
       aInfo.setOpacity(0);
       aInfo.setPointsize(9);
       aInfo.setFont("Arial");
       aInfo.setTextAntialias(true);
       String domain="manzhouyexing02";
       aInfo.setText( http://www.fiten.com/);
       int X=width-105-(5*domain.length()-1)-8;
       int Y=height+Y_FONT;
       aInfo.setGeometry("+"+X+"+"+Y+"");
       mi_orig.annotateImage(aInfo);
      }
      mi_orig.setFileName("d://temptest//"+i+"_"+1+".jpg");
      mi_orig.writeImage(ii_result);
      mi_orig.destroyImages();
      if(width>HAS_MARK)mi_wm.destroyImages();
     }
    }
   }
  } catch (MagickException me) {
   me.printStackTrace();
  }
  System.exit(0);
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值