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 =
"";
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
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);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
}
System.out.println("f.exists="+f.exists());
}
catch (Exception e) {
e.printStackTrace();
}
}
}
return
realFileName;
}
}