zoukankan      html  css  js  c++  java
  • 一个用于图片上传的工具类(原)

    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;
    	}
    }
    
  • 相关阅读:
    ASP.NET中JSON的序列化和反序列化
    Git 本地项目上传至托管平台(OsChina/GitHub)
    Android Gradle 完整指南(转)
    开发错误记录13:java.lang.UnsatisfiedLinkError: Couldn't load xxx.so: findLibrary returned null
    Android其它新控件 (转)
    一个Activity掌握Design新控件 (转)
    一个Activity掌握Android5.0新控件 (转)
    一个Activity掌握Android4.0新控件 (转)
    开发错误日记 12: Unsupported major.minor version 52.0
    Linux 下各个目录的作用及内容
  • 原文地址:https://www.cnblogs.com/wcyBlog/p/4043354.html
Copyright © 2011-2022 走看看