spring mvc 圖片上傳+圖片格式轉換+圖片壓縮
阿新 • • 發佈:2018-12-07
利用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; }