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

 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     }

压缩图片

时间: 2024-10-11 20:58:53

Java - MultipartFile图片上传服务器,并且指定大小压缩的相关文章

java多线程文件上传服务器

描述: (1)jdk自带线程池见 JDK自带线程池配置 (2)此上传文件服务器中上传文件的后缀名通过第一段缓冲字符流传递,此缓冲字符流大小为1024,在文件接收端以1024接收.处理. 1.服务器代码如下(使用jdk自带线程池): 1 /** 2 * 服务器处理多线程问题 3 * 4 * 1.因为服务器是要很多人访问的,因此里面一定要用多线程来处理,不然只能一个人一个人的访问,那还叫Y啥服务器 5 * 6 * 2,拿上面这个文件上传的例子来说,它将每个连接它的用户封装到线程里面去,把用户要执行的

Java Servlet图片上传至指定文件夹并显示图片

在学习Servlet过程中,针对图片上传做了一个Demo,实现的功能是:在a页面上传图片,点击提交后,将图片保存到服务器指定路径(D:/image):跳转到b页面,b页面读取展示绝对路径(D:/image)的图片.主要步骤如下: 步骤一:上传页面uploadphoto.jsp 需要注意两个问题: 1.form 的method必须是post的,get不能上传文件, 还需要加上enctype="multipart/form-data" 表示提交的数据是二进制文件. 2.需要提供type=&

java实现图片上传功能,并返回图片保存路径

1.前端html <div class="form-group">     <label for="inputPassword3" class="col-sm-2 control-label">身份证正面照片:</label>     <div class="col-sm-10">     <input type="hidden" name="

java web图片上传和文件上传

图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype="multipart/form-data" 2.为了能保证文件能上传成功file控件的name属性值要和你提交的控制层变量名一致, 例如空间名是file那么你要在后台这样定义 private File file; //file控件名 private String fileContentType;//图

链接ftp,把文件或图片上传到ftp指定的文件夹中

/******************************************************************** *  * * Filename : .java * Author :  * Date : 2015年6月5日 * Version : V1.00 * Description : * * History : Modify Id | Date | Origin | Description *************************************

图片上传服务器压缩工具类

这个是我整理调试的图片上传工具类:只需要图片路径方可:大家可以直接使用:希望可以帮助到大家:代码如下: package com.wyy.twodimcode.push; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; impo

php图片上传服务器

原理是把图片上传到服务器的某个目录,然后在把他的名字存入数据库,或者不需要数据库这部分也行.读取的时候直接读取名字. HTML提交表格 <form method="post" action="upload_image_todb.php?name=<?php echo $username;?>" enctype="multipart/form-data"> <table> <h4>选择图片 <s

C#图片上传服务器缩放存储功能

项目需求上需要用户上传头像.本来是用第三方的插件的.但是很多都是收费的. 不过,我需要花这钱么?是不?所以网络上搜集了些资料.. 果然.这个世界 大神是很多很多的. 用了个免费插件. <script src="../Scripts/ajaxFileUpload.js" type="text/javascript"></script> 这玩意儿真心强大. 图片传到服务器了. 然后问题来了.图片要缩放.本来是想裁剪的. 不过.真心很烦..裁剪也做

JSP图片上传服务器

String operator = request.getParameter("operator"); //页面跳转的标识 String succeed="0";//记录是否上传成功 String fileName = "";//文件名字 String fileExt = ""; String filename1=""; if(operator!=null){ succeed="1";