springMVC MultipartFile上传图片时如何修改图片大小
作者:RiceTZ
这篇文章主要介绍了springMVC MultipartFile上传图片时如何修改图片大小问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
引言
服务器配置比较低,打开网站时加载1MB+的图片 速度很慢,影响客户体验。
所以从网上找了java修改图片大小的方法,这里记录一下 以备以后不时之需。
我这里设置的是宽240,,高135 按照16:9的比例设置。
修改之后的图片大小在100kb左右
16:9的比例其他参数:
3840×2160 2560X1440 1920×1080 1600×900 1366×768 1280×720 1024×576
960×540 854×480 720×405 640×360 480×270 320×180
代码
@RequestMapping("/admin/fileUpload") @ResponseBody public Map<String, Object> fileUpload(HttpServletRequest request, @RequestParam("uploadFile") MultipartFile uploadFile){ Map<String, Object> map = new HashMap<String, Object>(); try { //原文件名后缀 String fileEnd = FilenameUtils.getExtension(uploadFile.getOriginalFilename()); //新文件名以uuid为名 String fileUUID = CommonsUtil.getUUID(); //获取当前项目部署的地址,也可以直接指定路径,D://blogFile//xx.jpg //String realPath = request.getSession().getServletContext().getRealPath("//blogFile//"+TimeUtil.curYearMonthDay()); String realPath = "C://blogFile//"+TimeUtil.curYearMonthDay(); File dirs=new File(realPath); if(!dirs.exists()){//判断文件夹是否存在 System.out.println("文件夹不存在,进行创建。"); dirs.mkdirs();//不存在就创建 } //创建file对象,新地址新名称 原上传图片所需 //File newFile=new File(realPath,fileUUID+"."+fileEnd); //上传图片时对图片按照16:9的比例压缩240*135 //读取图片 BufferedInputStream in = new BufferedInputStream(uploadFile.getInputStream()); //字节流转图片对象 Image bi =ImageIO.read(in); //构建图片流 按照16:9的比例 设置宽高 240*135 //宽240 高135 我这里直接写死了 也可以写成参数形式的。 BufferedImage tag = new BufferedImage(240, 135, BufferedImage.TYPE_INT_RGB); //绘制改变尺寸后的图 tag.getGraphics().drawImage(bi, 0, 0, 240, 135, null); //输出流 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(realPath+"//"+fileUUID+"."+fileEnd)); ImageIO.write(tag, fileEnd,out); in.close(); out.close(); //原上传图片方法 //uploadFile.transferTo(newFile); //FileUtils.copyInputStreamToFile(uploadFile.getInputStream(), newFile);//第二种原上传图片方法 System.out.println("图片地址:"+realPath+"//"+fileUUID+"."+fileEnd); map.put("sign", "success"); } catch (Exception e) { e.printStackTrace(); map.put("sign", "error"); map.put("msg", e.toString()); } return map; }
一点小建议
因为java是跨语言 所以路径符最好使用/
- 在java中路径一般用"/"
- windows中的路径一般用"\"
- linux、unix中的路径一般用"/"
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。