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