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