jmagick处理图片,加水印

             jmagick处理图片效果极高,是java处理能力的4倍,提供图片加水印,当然java也有。

            Windows下的安装jmagickf方法

         一 首先下载jmagick客户端和jmagick.dll,注意版本要一致。

         二 安装好jdk ,配置环境变量。

         三安装jmagick把安装目录下dll文件全部拷贝到你系统system32中(看你系统是64位还是24位,64位放到64位文件夹中),把jmagick.dll 放到你的项目中,如果你的项目是web项目,那么把它放到容器中(如tomcat)。

         这样配置就完成了,如果不行,那绝对是你代码的问题。


               String shuiyinImageUrl=PropertiesUtil.getParameter(Constant.FILE_CONFIG, Constant.SHUIYING);//水印图片路径
String imgUrl = PropertiesUtil.getParameter(Constant.FILE_CONFIG, Constant.IMG_URL);
String imgFolder = PropertiesUtil.getParameter(Constant.FILE_CONFIG, Constant.IMG_FOLDER);
String rootFolder = imgFolder;
String fileName = UniqueId.genId(14);
String imageFileName = fileName + ".jpg";
String imageURL = imgUrl + imageFileName;//原图地址
/*File dest = FileUtil.mkfile(imgFolder + File.separator, imageFileName);
ImageIO.write(image, "jpg", dest);*/
File originFile = FileUtil.mkfile(rootFolder + File.separator, imageFileName);
ImageIO.write(image, "jpg", originFile);
// 读取所有图片尺寸规格,逐一缩放保存
Properties prop = PropertiesUtil.getProperties(Constant.IMAGE_CONFIG);
String key = null;
String newKey = null;
String value = null;
String[] sizeArray = null;
MagickImage toImage = null;
String imgpath=imgFolder+imageFileName;
ImageInfo info = new ImageInfo(imgpath);
MagickImage fromImage = new MagickImage(info);
//MagickImage fLogo = new MagickImage(new ImageInfo(shuiyinImageUrl));//水印图片
// Dimension logoDim = fLogo.getDimension();//水印图片
MagickImage sLogo = null;//水印图片
Dimension dim = fromImage.getDimension(); // 图片原始尺寸
int toWidth = (int) dim.getWidth(); 
int toHeight = (int) dim.getHeight();
int temp = 0;
for (Entry<Object, Object> entry : prop.entrySet()) {
key = entry.getKey().toString();
newKey = key.replace(".", "_");
value = entry.getValue().toString();
if (StringUtils.isNotEmpty(value)) {
sizeArray = value.split(",");
if (sizeArray.length > 0) {
temp = Integer.parseInt(sizeArray[0]);
if (temp != 0) { 
toWidth = temp; // 尺寸为0表示无限制(保留原始尺寸)
}
temp = Integer.parseInt(sizeArray[1]);
if (temp != 0) { 
toHeight = temp; // 尺寸为0表示无限制(保留原始尺寸)
}
toImage = fromImage.scaleImage(toWidth, toHeight); // 缩放

//开始添加水印
int lw = toWidth / 6;
int lh = logoDim.height * lw / logoDim.width;
sLogo = fLogo.scaleImage(lw, lh);//设置图片的大小
toImage.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
toWidth - (lw + lh / 6), toHeight - (lh + lh / 6));
//end添加水印

toImage.setFileName(imgFolder + File.separator + fileName + "_" + newKey + ".jpg");// 设置输出的文件名
toImage.writeImage(info); // 保存
}
}
}

// 创建小图
info = new ImageInfo(rootFolder + File.separator + imageFileName);
fromImage = new MagickImage(info);
dim = fromImage.getDimension();
toWidth = (int) dim.getWidth();
toHeight = (int) dim.getHeight();
toImage=null;
if(FileUtil.getFileSize(originFile)>0.08){// 大于80的不进行压缩
toImage = fromImage.scaleImage(toWidth/2, toHeight/2);//缩放操作
}else {
toImage = fromImage.scaleImage(toWidth, toHeight);//缩放操作
}

//开始添加水印
int lw = toWidth / 6;
int lh = logoDim.height * lw / logoDim.width;
sLogo = fLogo.scaleImage(lw, lh);//设置图片的大小
toImage.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
toWidth - (lw + lh / 6), toHeight - (lh + lh / 6));
//end添加水印

toImage.setFileName(rootFolder + File.separator + "small-" + imageFileName);// 设置输出的文件名
toImage.writeImage(info); //保存

  有什么不明白的可以QQ联系我,737388476



   

 

 

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值