java中修改上传图片大小,springMVC MultipartFile 上传图片时修改图片大小

1.引言

服务器配置比较低,打开网站时加载1MB+的图片 速度很慢,影响客户体验。所以从网上找了java修改图片大小的方法,这里记录一下 以备以后不时之需。我这里设置的是宽240,,高135 按照16:9的比例设置。

修改之后的图片大小在100kb左右

16:9的比例其他参数:

3840×2160  2560X1440 1920×1080 1600×900 1366×768 1280×720 1024×576

960×540 854×480 720×405 640×360 480×270 320×180

2.代码

@RequestMapping("/admin/fileUpload")

@ResponseBody

public MapfileUpload(HttpServletRequest request,

@RequestParam("uploadFile") MultipartFile uploadFile){

Mapmap = new HashMap();

try {

//原文件名后缀

String fileEnd = FilenameUtils.getExtension(uploadFile.getOriginalFilename());

//新文件名以uuid为名

String fileUUID = CommonsUtil.getUUID();

//获取当前项目部署的地址,也可以直接指定路径,D://blogFile//xx.jpg

//String realPath = request.getSession().getServletContext().getRealPath("//blogFile//"+TimeUtil.curYearMonthDay());

String realPath = "C://blogFile//"+TimeUtil.curYearMonthDay();

File dirs=new File(realPath);

if(!dirs.exists()){//判断文件夹是否存在

System.out.println("文件夹不存在,进行创建。");

dirs.mkdirs();//不存在就创建

}

//创建file对象,新地址新名称 原上传图片所需

//File newFile=new File(realPath,fileUUID+"."+fileEnd);

//上传图片时对图片按照16:9的比例压缩240*135

//读取图片

BufferedInputStream in = new BufferedInputStream(uploadFile.getInputStream());

//字节流转图片对象

Image bi =ImageIO.read(in);

//构建图片流 按照16:9的比例 设置宽高 240*135

//宽240 高135 我这里直接写死了 也可以写成参数形式的。

BufferedImage tag = new BufferedImage(240, 135, BufferedImage.TYPE_INT_RGB);

//绘制改变尺寸后的图

tag.getGraphics().drawImage(bi, 0, 0, 240, 135, null);

//输出流

BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(realPath+"//"+fileUUID+"."+fileEnd));

ImageIO.write(tag, fileEnd,out);

in.close();

out.close();

//原上传图片方法

//uploadFile.transferTo(newFile);

//FileUtils.copyInputStreamToFile(uploadFile.getInputStream(), newFile);//第二种原上传图片方法

System.out.println("图片地址:"+realPath+"//"+fileUUID+"."+fileEnd);

map.put("sign", "success");

} catch (Exception e) {

e.printStackTrace();

map.put("sign", "error");

map.put("msg", e.toString());

}

return map;

}

一点小建议

因为java是跨语言 所以路径符最好使用/

在java中路径一般用"/"

windows中的路径一般用"\"

linux、unix中的路径一般用"/"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值