使用google 开源工具 对图片进行 压缩 处理 ,
具体工具功能见 http://www.cnblogs.com/linkstar/p/7412012.html
这里只测试一下压缩功能 :
@RequestMapping(value = "/image/dealImage", method = RequestMethod.POST)
public ModelMap dealImage(MultipartFile file, HttpServletRequest request) {
ModelMap modelMap = new ModelMap();
try {
InputStream io = file.getInputStream();
int size = io.available();
if (size <= 0) {
modelMap.put("code", "500");
modelMap.put("message", "图片为空!");
return modelMap;
}
String fileName = file.getOriginalFilename();
String name = fileName.substring(0, fileName.lastIndexOf("."));
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
/**
* 生成图片的地址
*/
String path = env.getProperty("statics.path");
String uuid = UUID.randomUUID().toString().replace("-", "");
//目录
String dir = path + "image" + "/";
//地址
String url = dir + name + uuid + "." + suffix;
File file2 = new File(url);
if (!file2.exists()) {
//先得到文件的上级目录,并创建上级目录,在创建文件
file2.getParentFile().mkdirs();
file2.createNewFile();
}
/**
* 调用google 的图片处理方法
* 1. 原图文件的路径 /图片io流
* 2. scale是可以指定图片的大小,值在0到1之间,1f就是原图大小,0.5就是原图的一半大小,这里的大小是指图片的长宽。
* 3. outputQuality是图片的质量,值也是在0到1,越接近于1质量越好,越接近于0质量越差。
* 4. 压缩后文件的路径
*/
Thumbnails.of(io).scale(0.5f).outputQuality(1f).toFile(url);
modelMap.addAttribute("code", "200");
modelMap.addAttribute("message", "上传成功!");
} catch (IOException e) {
logger.error("", e);
}
return modelMap;
}
得到对比图如下:
看起来似乎生成的图片与原图有点不同.
但是,我又打开了两张生成的图片1,2进行对比,
交换 1,2 图片位置
原来是视觉问题!!!
maven的地址
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>