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); // 定义一个数组,用于保存可上传的文件类型 ListfileTypes = new ArrayList (); 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; }}