一个用于图片上传的工具类(原)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 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; } } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步