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

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;
    }
}

 

posted @   吴小雨  阅读(1017)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示