spring mvc 图片上传+图片格式转换+图片压缩

利用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;
	   
   }

猜你喜欢

转载自blog.csdn.net/weixin_42402804/article/details/82861882