一个用于图片上传的工具类(原)

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

 

posted @ 2014-10-22 15:43  吴小雨  阅读(1014)  评论(0编辑  收藏  举报