JAVA压缩图片 服务器端压缩图片 原创
2016-06-30 17:52
681 查看
@RequestMapping(value = "/uploadImage", method = RequestMethod.POST) @ResponseBody public String uploadImage(HttpServletRequest request) throws IOException { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator<String> iterator = multipartRequest.getFileNames(); String fileName = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dir = "upload/" + sdf.format(new Date()) + "/"; String realPath = request.getSession().getServletContext().getRealPath("/"); String suffix = ""; while (iterator.hasNext()) { MultipartFile multipartFile = multipartRequest.getFile(iterator.next()); if (multipartFile != null) { String fn = multipartFile.getOriginalFilename(); suffix = fn.substring(fn.lastIndexOf(".")); fileName = Utils.getRandomStringByLength(6) + suffix; String path = realPath + dir + fileName; path = path.replace("\\", "/"); File f = new File(path); if (!f.mkdirs()) { f.mkdir(); } multipartFile.transferTo(f); } } PictureUtil.Tosmallerpic(realPath + dir, new File((realPath + dir + fileName).replace("\\", "/")), suffix, fileName, (float) 0.1); return dir +fileName; }
package com.property.client.util; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.logging.Level; /** */ public class PictureUtil { private final static Logger logger = LoggerFactory.getLogger(PictureUtil.class); /** * @param originalFilePath 原图片所在的文件夹路径 * @param originalFileObject 原图片路径 * @param originalFileExtensionName 原图片扩展名 * @param originalFileName 原图片名 * @param percent 压缩百分比 */ public static void Tosmallerpic(String originalFilePath, File originalFileObject, String originalFileExtensionName, String originalFileName, float percent) { Image src; try { src = javax.imageio.ImageIO.read(originalFileObject); //构造Image对象 String img_midname = originalFilePath + originalFileName.substring(0, originalFileName.indexOf(".")) + originalFileExtensionName + "_small"; BufferedImage tag = new BufferedImage(src.getWidth(null), src.getHeight(null), BufferedImage.TYPE_INT_RGB); //tag.getGraphics().drawImage(src,0,0,new_w,new_h,null); //绘制缩小后的图 tag.getGraphics().drawImage(src.getScaledInstance(src.getWidth(null), src.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null); FileOutputStream newImage = new FileOutputStream(img_midname); //输出到文件流 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newImage); JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag); /* 压缩质量 */ jep.setQuality(percent, true); encoder.encode(tag, jep); //encoder.encode(tag); //近JPEG编码 newImage.close(); } catch (IOException ex) { logger.error("图片压缩失败", ex); } } }
相关文章推荐
- java-collections.sort异常Comparison method violates its general contract!
- JRE、JDK和JVM之间的关系
- Spring MVC整理系列(04)————Spring MVC配置解析及整合SprinSpring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- 使用代码块和JAVA程序来接收游标返回数据集合
- java中的final关键字
- 深入理解java虚拟机读书笔记1--java内存区域
- java中关于线程间协作所用关键字synchronized,wait,notify的用法
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- Java-3
- java实现多线程编程的两种方法。
- java多线程断点下载
- Eclipse无法以Debug模式运行
- Java 21选5 问题
- Java基础数组应用
- java编程相关总结(三)
- org.springframework.beans.factory.BeanDefinitionStoreExcep
- JAVA 读取本地配置文件(2)
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- java.util.Date和java.util.Calendar及相关类
- java @ResponseBody返回值中去掉NULL字段