利用springmvc进行图片处理,本例中用到了imageio和谷歌压缩工具类Thumbnails,下面是代码仅供参考,如有不足之可在下方留言或者自行更正
@RequestMapping("/uploadFile")
@ResponseBody
public Map<String,String> uploadFile(HttpServletRequest request,String fileName,HttpServletResponse response){
Map<String,String> map=new HashMap<>();
//将png图片转为jpg图片样式
BufferedImage bufferedImage;
//将request转换成多部件对象
MultipartHttpServletRequest mh=(MultipartHttpServletRequest) request;
//根据文件名获取文件
CommonsMultipartFile cmf=(CommonsMultipartFile) mh.getFile(fileName);
//获取文件的上传流
byte[] fbytes=cmf.getBytes();
//文件名称在服务器重复问题
String newFilename="";
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSS");
newFilename=sdf.format(new Date());
Random r=new Random();
for(int i=0;i<3;i++) {
newFilename=newFilename+r.nextInt(10);
}
//获取文件扩展名
String original=cmf.getOriginalFilename();
String suffix=original.substring(original.lastIndexOf("."));
System.out.println(suffix);
String[] aa= {".jpg",".png",".jpeg"};
List<String> list=Arrays.asList(aa);
if(!list.contains(suffix)) {
map.put("masg","上传图片应为jpg,jpeg,png格式");
return map;
}
String path=request.getSession().getServletContext().getRealPath("\\images\\headPhoto");
//String path="D:\\javadaima\\feizi\\WebRoot\\images\\headPhoto";
newFilename=newFilename+".jpg";
//System.out.println(path+newFilename);
File savefile=new File(path);
if(!savefile.exists()) {
savefile.mkdirs();
}
//写入文件
try {
InputStream input=cmf.getInputStream();
//输出前将png转为jpg
if(suffix.equals(".jpg")) {
Thumbnails.of(input).scale(1f).outputQuality(0.3f).toFile(path+"\\"+newFilename);
}else {
bufferedImage=ImageIO.read(input);
BufferedImage newbuffimage=new BufferedImage(bufferedImage.getWidth(),bufferedImage.getHeight(),bufferedImage.TYPE_INT_RGB);
newbuffimage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE,null);
Thumbnails.of(newbuffimage).scale(1f).outputQuality(0.3f).toFile(path+"\\"+newFilename);
}
//FileOutputStream out=new FileOutputStream(path+"\\"+newFilename);
//out.write(fbytes);
//out.flush();
//out.close();
input.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
map.put("fullimgurl","images/headPhoto/"+newFilename);
return map;
}