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


    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;
    	}
    }
    
  • 相关阅读:
    如何在 Knative 中部署 WebSocket 和 gRPC 服务?
    全球首个开放应用模型 OAM 开源 | 云原生生态周报 Vol. 23
    从零开始入门 K8s | Kubernetes 网络概念及策略控制
    重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源
    成都,我们来啦 | Dubbo 社区开发者日
    一文读懂分布式架构知识体系(内含超全核心知识大图)
    阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布
    可能是国内第一篇全面解读 Java 现状及趋势的文章
    从零开始入门 K8s | 可观测性:监控与日志
    阿里巴巴的云原生与开发者
  • 原文地址:https://www.cnblogs.com/wcyBlog/p/4043354.html
Copyright © 2020-2023  润新知