博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个用于图片上传的工具类(原)
阅读量:5061 次
发布时间:2019-06-12

本文共 2912 字,大约阅读时间需要 9 分钟。

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
fileTypes = new ArrayList
(); 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; }}

 

转载于:https://www.cnblogs.com/wcyBlog/p/4043354.html

你可能感兴趣的文章
Java基础--面向对象编程1(类与对象)
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>