千家信息网

springboot怎么实现图片大小压缩功能

发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,本篇内容主要讲解"springboot怎么实现图片大小压缩功能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot怎么实现图片大小压缩功能"
千家信息网最后更新 2025年02月22日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安全错误 数据库的锁怎样保障安全 鞍山货币量化交易软件开发费用 我的世界服务器服主搞怪视频 破译黑平台服务器 美国网络安全企业名单 神武4手游服务器时间 利用树莓派和网络安全 信息技术网络安全与教育 物理服务器规格 我的世界服主怎么改服务器图标 创建数据库结构就是要在数据库中 乌鲁木齐网络安全中心 工控系统网络安全建设 网络安全简历模版 静安区网络技术咨询服务 数据库系统工程师工作经历 请将数据库按照内容 网络技术怎么缩写 数据库的应用领域有哪些 上海技术网络技术代理品牌 第五空间网络安全电影 服务器禁止ping 软件开发需求沟通技巧 广州快推网络技术有限公司 软件开发针对图片上传的思路 乡村网络安全宣传周记 勤哲excel服务器安装 HCNA网络技术实验指南最新版 黔西南蜕僮网络技术有限公司 春考网络技术技能真题 杭州冒险元素网络技术电话
0