springboot怎么实现图片大小压缩功能
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"springboot怎么实现图片大小压缩功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot怎么实现图片大小压缩功能"
千家信息网最后更新 2025年01月20日springboot怎么实现图片大小压缩功能
本篇内容主要讲解"springboot怎么实现图片大小压缩功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot怎么实现图片大小压缩功能"吧!
application.properties配置文件
#后端接收图片大小spring.servlet.multipart.max-file-size=50MBspring.servlet.multipart.max-request-size=50MB
java工具类
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ImageObserver;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.InputStream;//** * 请求调用方法 * gb * * @param fromPath2 byte直接文件图片 * @return 剪切后的byte文件 */ public static byte[] imageSet(byte[] fromPath2) throws Exception { return imageChangeSize(fromPath2, 470, 635); } /** * @param data byte类型图片 * @param max_wi 图片修改后最大的宽 * @param max_he 图片修改后最大的高 * @return * @throws Exception * @Description 更改图片内容的大小 byte【】 类型 */ public static byte[] imageChangeSize(byte[] data, int max_wi, int max_he) throws Exception { ImageIO io = null; float rate = 1; /*图片的原始宽 120*/ int oldwi; /*图片的原始高 120*/ int oldhe; /*图片修改后的宽 0*/ int new_wi = 0; /*图片修改后的高 0*/ int new_he = 0; /*拿到byte图片*/ InputStream is = new ByteArrayInputStream(data); BufferedImage bufImg = ImageIO.read(is); /*图片的原始宽度*/ oldwi = bufImg.getWidth(); /*图片的原始高度*/ oldhe = bufImg.getHeight(); // rate = (float) oldwi / (float) oldhe; /*如果图片的原宽大于最大宽度,并且原高小于等于最大高度。则证明图片过宽了,将图片宽度设置为最大宽度,此时需要等比例减小高度*/ if (oldwi > max_wi && oldhe <= max_he) { new_wi = max_wi; new_he = new Float((float) new_wi / rate).intValue(); /*如果图片的原宽和原高都大于或者都小于其所对应的最大值,则以任意一方为主(此处以最大高度为主)*/ } else if (oldwi >= max_wi && oldhe >= max_he || oldwi <= max_wi && oldhe <= max_he) { new_he = max_he; new_wi = new Float(new_he * rate).intValue(); /*如果图片的原宽小于于最大宽度,并且原高大于等于最大高度。则证明图片过高了,将图片宽度设置为最大高度,此时需要等比例减小宽度*/ } else if (oldwi <= max_wi && oldhe > max_he) { new_he = max_he; new_wi = new Float(new_he * rate).intValue(); }// System.err.println("原宽度:" + oldwi + "原高度:" + oldhe + "_" + rate); /*开始改变大小*/ ImageObserver ser = null; BufferedImage bf = new BufferedImage(new_wi, new_he, BufferedImage.TYPE_INT_RGB); bf.getGraphics().drawImage(bufImg, 0, 0, new_wi, new_he, null);// System.err.println("新宽度:" + bf.getWidth() + "-" + "新高度:" + bf.getHeight()); ByteArrayOutputStream out = new ByteArrayOutputStream(); //转换编码格式JPEG ImageIO.write(bf, "jpeg", out); byte[] re = out.toByteArray(); //logger.info("【图片剪切】| 图片原大小={}kb | 压缩后大小={}kb", (data.length / 1024), (re.length / 1024)); return re; }
使用
controller
@RequestMapping(value = "/getImage", method = RequestMethod.POST)@ResponseBody public JsonData getidcart(@RequestParam(value = "front", required = false) MultipartFile front) throws Exception { byte[] IdCartFront; /** * 图片字节 * 判断压缩 >300kb就压缩到300kb以下 300000k=300kb 设置宽高px--->转小kb */ if (front.getSize() > SIZE_DEFUALT) { IdCartFront = ImageUtils.imageSet(front.getBytes()); } else { IdCartFront = front.getBytes(); }
页面
js
/** 获取照片 */function getImg(e, eId, next) { var imgFile = e.target.files[0]; var newImgFile = window.webkitURL.createObjectURL(imgFile); document.getElementById("" + eId + "").style.backgroundImage = "url(" + newImgFile + ")"; if (next == 1) { front = imgFile; } else if (next == 2) { back = imgFile; } else if (next == 3) { face = imgFile; }}//ajax:************************//将file文件转为formdata,Ajax传到后台 formData = new FormData(); formData.append('front', front); url: url, type: 'POST', cache: false, data: formData, processData: false, contentType: false,
到此,相信大家对"springboot怎么实现图片大小压缩功能"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
图片
宽度
大小
最大
高度
原始
文件
功能
内容
方法
类型
剪切
学习
实用
更深
兴趣
后台
图片内容
字节
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
泰安泺亨国际软件开发
丰台区数据网络技术一体化
大象精灵软件开发有限公司老板
实况足球华为和小米服务器互通吗
软件开发实习过程简介
UK可以代替航天服务器
深圳市云帆网络技术
关于网络安全答题活动开展的简报
武装突袭3区服务器信息查询
北京电子邮件中继服务器
图书馆数据库知识产权
武汉市网络安全人才与创新基地
vpn服务器 网对网
E02100服务器超时
华为服务器安装centos
关于疫情期间网络安全方面
我的世界攻击服务器
富士道闸系统消息服务器不可用
计算机网络技术模拟试题1
iscd数据库
云服务器适合什么操作系统
广西十大网络安全公司
对日软件开发日语等级
青海网络安全管理规定
网络技术相关企业
关于疫情期间网络安全方面
如何删除数据库中的数据
中移铁通网络安全
软件开发企业退所得税
达梦数据库安全性级别