图片上传工具类

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;
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值