图片打水印方法

public static void createWaterMark(String picFrom, String picTo, String MARK, int Op, int quality) {
        try {
            MagickImage mark = new MagickImage(new ImageInfo(MARK));
            Dimension markDim = mark.getDimension();

            int mark_width = markDim.width;
            int mark_height = markDim.height;

            ImageInfo info = new ImageInfo(picFrom);
            if(quality>0) {
                info.setQuality(quality);
            }
            MagickImage image = new MagickImage(info);
            Dimension imageDim = image.getDimension();
            int pic_width = imageDim.width;
            int pic_height = imageDim.height;

            int offsetX = pic_width - mark_width-10;
            int offsetY = pic_height - mark_height-10;
            String cmd = "composite -geometry +" + offsetX+ "+" + offsetY + " -quality 96 "+ MARK + " " +  picFrom + " " + picTo;
            //String cmd = "/usr/local/bin/convert -draw 'image Over " + offsetX+ "," + offsetY + " "+ mark_width+ "," + mark_height + " " + MARK + "' -quality 96 " + picFrom + " " + picTo;
            System.out.println(cmd);
            if(true) {
                if(Op>0 && Op<16) {
                    image.compositeImage(Op, mark, offsetX, offsetY);
                }

                image.setFileName(picTo);
                image.writeImage(info);
            } else {
                Runtime runtime = Runtime.getRuntime();
                if( runtime == null ) {
                    System.err.println("runtime Error!");
                }

                try {

                    Process ps = runtime.exec(cmd);
                    ps.waitFor();
                } catch (Exception E) {E.printStackTrace();}
            }

        }  catch(MagickApiException ex) {
            ex.printStackTrace();
        }  catch(MagickException ex) {
            ex.printStackTrace();
        }
    }

方法二:

 void setWaterMark(String pic,int boardid){
                MagickImage mark = null;
                MagickImage image = null;
                try{
                        ImageInfo info = new ImageInfo(pic);
                        image = new MagickImage(info);
                        String filetype = image.getMagick();
                        if (!filetype.equalsIgnoreCase("JPEG") && !filetype.equalsIgnoreCase("JPG")) return;
                        int imgWidth = image.getDimension().width;
                        int imgHeight = image.getDimension().height;
                        int fileSize = image.sizeBlob();
                        String markFileName = "";
                        if(imgWidth > 100 && imgHeight > 100){
                                if(imgWidth>200 && (boardid==4 || boardid==11 || boardid==16 || boardid==34)) {
                                        if(imgWidth<480) {
                                                markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_400.png";
                                        } else if(imgWidth<700) {
                                                markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_600.png";
                                        } else if(imgWidth<1024) {
                                                markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_800.png";
                                        } else if(imgWidth>=1024) {
                                                markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_1024.png";
                                        }
                                } else  if(imgWidth>100 && (boardid<955 || boardid==960)) {
                                        if(imgWidth<200) {
                                                markFileName = "/opt/album/pic/chinaren_club_logo_100.png";
                                        } else if(imgWidth<700) {
                                                markFileName = "/opt/album/pic/chinaren_club_logo_200.png";
                                        } else if(imgWidth<1024) {
                                                markFileName = "/opt/album/pic/chinaren_club_logo_800.png";
                                        } else if(imgWidth>=1024) {
                                                markFileName = "/opt/album/pic/chinaren_club_logo_1024.png";
                                        }
                                }
                                mark = new MagickImage(new ImageInfo(markFileName));

                                int markWidth  = mark.getDimension().width;
                                int markHeight = mark.getDimension().height;

                                int offsetX = imgWidth - markWidth - 10;
                                int offsetY = imgHeight - markHeight - 2;

                                image.compositeImage(3, mark, offsetX, offsetY);
                                image.setImageAttribute("Comment","Copyright www.ChinaRen.Com ");
                                image.signatureImage();
                                image.writeImage(info);
                        }
                }catch(Exception e) {
                        e.printStackTrace();
                        System.err.println("MarkWater '"+pic+"' fail!");
                }finally{
                        if(mark != null){       
                try{mark.destroyImages();}catch(Exception e){}
                        }
                        if(image != null){
                                try{image.destroyImages();}catch(Exception e){}
                        }
                }
}

参考网址:

http://pengsky2002.javaeye.com/blog/243633

http://flyeruo.bokee.com/viewdiary.11808848.html

http://tech.it168.com/j/2008-06-01/200806010908486.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值