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