您好,登錄后才能下訂單哦!
本篇內容主要講解“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怎么實現圖片大小壓縮功能”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。