@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);
}
}
}