package com.util;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/*******************************************************************************
* 缩略图类(通用) 本java类能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换。 具体使用方法
* compressPic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
*/
public class CompressPic {
public String addImages(HttpServletRequest request,String Urlpath,String InputfileName) {
String realFileName = "";
// 转型为MultipartHttpRequest(重点的所在)
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得第1张图片(根据前台的name名称得到上传的文件)
MultipartFile imgFile1 = multipartRequest.getFile(InputfileName);
// 定义一个数组,用于保存可上传的文件类型
List<String> fileTypes = new ArrayList<String>();
fileTypes.add("jpg");
fileTypes.add("jpeg");
fileTypes.add("bmp");
fileTypes.add("png");
if (!(imgFile1.getOriginalFilename() == null || "".equals(imgFile1.getOriginalFilename()))) {
String fileName = imgFile1.getOriginalFilename();
// 获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名
String ext = fileName.substring(fileName.lastIndexOf(".") + 1,fileName.length());
// 对扩展名进行小写转换
ext = ext.toLowerCase();
if (fileTypes.contains(ext)) {// 如果扩展名属于允许上传的类型,则创建文件
try {
realFileName = String.valueOf(new Date().getTime()) + "."+ ext;
String path = request.getSession().getServletContext().getRealPath("/");
File f = new File(path + Urlpath + realFileName);
System.out.println("filePath="+path + Urlpath + realFileName);
imgFile1.transferTo(f);
Image img = ImageIO.read(f);
// 判断图片格式是否正确
if (img.getWidth(null) == -1)
return "no";
else {
BufferedImage tag = new BufferedImage(129, 100,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(img.getScaledInstance(129, 100,Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream out = new FileOutputStream(path + Urlpath + realFileName);
// FileOutputStream out2 = new FileOutputStream("D:\WorkSpace\onlinefdc\WebRoot\"+Urlpath+realFileName);
// JPEGImageEncoder可适用于其他图片类型的转换
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
// JPEGImageEncoder encoder2 = JPEGCodec.createJPEGEncoder(out2);
encoder.encode(tag);
// encoder2.encode(tag);
out.close();
// out2.close();
}
// f.delete();
System.out.println("f.exists="+f.exists());
} catch (Exception e) {
e.printStackTrace();
}
}
}
return realFileName;
}
}