中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot怎么實現圖片大小壓縮功能

發布時間:2022-04-22 16:25:09 來源:億速云 閱讀:728 作者:iii 欄目:開發技術

本篇內容主要講解“springboot怎么實現圖片大小壓縮功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“springboot怎么實現圖片大小壓縮功能”吧!

application.properties配置文件

#后端接收圖片大小
spring.servlet.multipart.max-file-size=50MB
spring.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();
        }

頁面

<!--身份證正面-->
<div class="photo" id="photo" enctype="multipart/form-data">
         <input type="file" multiple="multiple" accept="image/*"
            onchange="getImg(event,'photo',1)" enctype="multipart/form-data" id="face" required/>
</div>

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怎么實現圖片大小壓縮功能”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿阳县| 竹北市| 扎兰屯市| 昌宁县| 中西区| 孝义市| 怀来县| 黔西| 开江县| 平度市| 西乌珠穆沁旗| 同江市| 彰化县| 海门市| 大名县| 鄱阳县| 嵩明县| 榆社县| 东乡县| 利津县| 麟游县| 都安| 繁昌县| 靖西县| 盐亭县| 莎车县| 共和县| 广平县| 体育| 马尔康县| 嘉义市| 崇州市| 永福县| 汝州市| 敦化市| 塘沽区| 托里县| 岳西县| 彭水| 左权县| 东兰县|