Java图片的压缩

1、如果在springMvc中,会自带生成MultipartFile文件,将MultipartFile转化为File

1 MultipartFile file1 = file; 
2 CommonsMultipartFile cf= (CommonsMultipartFile)file1; 
3 DiskFileItem fi = (DiskFileItem)cf.getFileItem(); 
4 File f = fi.getStoreLocation();

2、转化为image类,并获取一些必须的数值

1 private static Image img;  
2 private static float width;  
3 private static float height; 
4 
5 img = ImageIO.read(f);      // 构造Image对象  
6 width  =  Float.parseFloat(String.valueOf(img.getWidth(null)));  // 得到源图宽  
7 height =  Float.parseFloat(String.valueOf(img.getHeight(null))); // 得到源图长 
8 
9 System.out.println("输入的图片大小:"+f.length()/1024+"kb");

3、压缩图片

 1 //判断文件是否能转化成image类
 2 if(width!=-1){
 3    //当前例子是等比例缩放到宽为320px
 4    //缩放比例
 5    Float s=width/320;
 6    //要缩放的宽
 7    Integer w=(int) (width/s);
 8    //要缩放的高
 9    Integer h=(int) (height/s);
10    
11    //创建一个模板
12    BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB);
13    //在模板上绘制缩小后的图 
14    image.getGraphics().drawImage(img, 0, 0, w, h, null);  
15 }

4、将生成的图片转化为InputStream

ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "gif", os);
InputStream is = new ByteArrayInputStream(os.toByteArray());

 

转载于:https://www.cnblogs.com/xyt-0412/p/4800425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值