码迷,mamicode.com
首页 > 编程语言 > 详细

Java - MultipartFile图片上传服务器,并且指定大小压缩

时间:2016-01-08 18:34:43      阅读:4462      评论:0      收藏:0      [点我收藏+]

标签:

 

技术分享
 1  /***
 2      * 上传图片到服务器 并压缩
 3      *
 4      * @param myFile  文件
 5      * @param request
 6      * @return
 7      */
 8     private Boolean UploadFile(MultipartFile myFile, int width, int height,     HttpServletRequest request) {
 9         Boolean sta = false;
10         InputStream is = null;
11         FileOutputStream fs = null;
12         /** 临时文件夹*/
13         String imgPath = "xyimages" + File.separator + "buttonImgTemp" + File.separator;
14         String tempPath = ServletConstants.WEB_ROOT_OS_PATH + imgPath;
15         System.out.println("old-path-" + tempPath);
16         String name = myFile.getOriginalFilename();
17         File oldFile = new File(tempPath);
18         if (!oldFile.exists()) {
19             oldFile.mkdirs();
20         }
21         /** 处理后文件夹*/
22         String newImaPath = "xyimages" + File.separator + "buttonImg" + File.separator;
23         String newPath = ServletConstants.WEB_ROOT_OS_PATH + newImaPath;
24         System.out.println("new-path-" + newPath);
25         File newFile = new File(newPath);
26         if (!newFile.exists()) {
27             newFile.mkdirs();
28         }
29         try {
30             /** 先存取源文件*/
31             is = myFile.getInputStream();
32             fs = new FileOutputStream(tempPath + myFile.getOriginalFilename());
33             //...
34             if (myFile.getSize() > 0) {
35                 byte[] buffer = new byte[1024 * 1024];
36                 int bytesum = 0;
37                 int byteread = 0;
38                 while ((byteread = is.read(buffer)) != -1) {
39                     bytesum += byteread;
40                     fs.write(buffer, 0, byteread);
41                     fs.flush();
42                 }
43                 fs.close();
44                 is.close();
45             }
46             /** 处理源文件 ,进行压缩再放置到新的文件夹*/
47             String oldPath = tempPath + myFile.getOriginalFilename();
48             String copyPath = newPath + myFile.getOriginalFilename();
49             Boolean ys = zipWidthHeightImageFile(oldPath, copyPath, width,height, 1f);
50             if (ys)
51                 sta = true;
52             else
53                 sta = false;
54         } catch (Exception ex) {
55             ex.printStackTrace();
56             sta = false;
57         }
58         return sta;
59     } 
第一步,先存源图片

 

技术分享
 1 /***
 2      * 压缩制定大小图片
 3      *
 4      * @param oldPath  临时图片路径
 5      * @param copyPath 压缩图片保存路径
 6      * @param width    宽度
 7      * @param height   高度
 8      * @param quality  高清度
 9      * @return
10      * @throws Exception
11      */
12     private Boolean zipWidthHeightImageFile(String oldPath, String copyPath, int width, int height,
13                                             float quality) {
14         Boolean sta = false;
15         File oldFile = new File(oldPath);
16         File newFile = new File(copyPath);
17         if (oldFile == null) {
18             return null;
19         }
20         String newImage = null;
21         try {
22             /** 对服务器上的临时文件进行处理 */
23             Image srcFile = ImageIO.read(oldFile);
24             int w = srcFile.getWidth(null);
25             System.out.println(w);
26             int h = srcFile.getHeight(null);
27             System.out.println(h);
28 
29             /** 宽,高设定 */
30             BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
31             tag.getGraphics().drawImage(srcFile, 0, 0, width, height, null);
32             //String filePrex = oldFile.substring(0, oldFile.indexOf(‘.‘));
33             /** 压缩后的文件名 */
34             //newImage = filePrex + smallIcon+ oldFile.substring(filePrex.length());
35 
36             /** 压缩之后临时存放位置 */
37             FileOutputStream out = new FileOutputStream(newFile);
38 
39             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
40             JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
41             /** 压缩质量 */
42             jep.setQuality(quality, true);
43             encoder.encode(tag, jep);
44             out.close();
45             sta = true;
46         } catch (Exception e) {
47             e.printStackTrace();
48             sta = false;
49         }
50         return sta;
51     }
压缩图片

 

Java - MultipartFile图片上传服务器,并且指定大小压缩

标签:

原文地址:http://www.cnblogs.com/huanzei/p/5113883.html

(5)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!