最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot實(shí)現(xiàn)圖片大小壓縮功能

 更新時(shí)間:2022年04月22日 15:00:26   作者:友發(fā)小猿  
這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)圖片大小壓縮功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了springboot實(shí)現(xiàn)圖片大小壓縮的具體代碼,供大家參考,具體內(nèi)容如下

application.properties配置文件

#后端接收?qǐng)D片大小
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;
/
/**
? ? ?* 請(qǐng)求調(diào)用方法
? ? ?* gb
? ? ?*
? ? ?* @param fromPath1 byte直接文件圖片
? ? ?* @return 剪切后的byte文件
? ? ?*/
? ? public static byte[] imageSet(byte[] fromPath1) throws Exception {
? ? ? ? return imageChangeSize(fromPath1, 470, 635);
? ? }

? ? /**
? ? ?* @param data ? byte類型圖片
? ? ?* @param max_wi 圖片修改后最大的寬
? ? ?* @param max_he 圖片修改后最大的高
? ? ?* @return
? ? ?* @throws Exception
? ? ?* @Description 更改圖片內(nèi)容的大小 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;
? ? ? ? /*如果圖片的原寬大于最大寬度,并且原高小于等于最大高度。則證明圖片過(guò)寬了,將圖片寬度設(shè)置為最大寬度,此時(shí)需要等比例減小高度*/
? ? ? ? if (oldwi > max_wi && oldhe <= max_he) {
? ? ? ? ? ? new_wi = max_wi;
? ? ? ? ? ? new_he = new Float((float) new_wi / rate).intValue();
? ? ? ? ? ? /*如果圖片的原寬和原高都大于或者都小于其所對(duì)應(yīng)的最大值,則以任意一方為主(此處以最大高度為主)*/
? ? ? ? } 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();
? ? ? ? ? ? /*如果圖片的原寬小于于最大寬度,并且原高大于等于最大高度。則證明圖片過(guò)高了,將圖片寬度設(shè)置為最大高度,此時(shí)需要等比例減小寬度*/
? ? ? ? } 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();
? ? ? ? //轉(zhuǎn)換編碼格式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;
? ? ? ? /**
? ? ? ? ?* ?圖片字節(jié)
? ? ? ? ?* ?判斷壓縮 >300kb就壓縮到300kb以下 300000k=300kb 設(shè)置寬高px--->轉(zhuǎn)小kb
? ? ? ? ?*/
? ? ? ? if (front.getSize() > SIZE_DEFUALT) {
? ? ? ? ? ? IdCartFront = ImageUtils.imageSet(front.getBytes());
? ? ? ? } else {
? ? ? ? ? ? IdCartFront = front.getBytes();
? ? ? ? }

頁(yè)面

<!--身份證正面-->
<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文件轉(zhuǎn)為formdata,Ajax傳到后臺(tái)
? ? formData = new FormData();
? ? formData.append('front', front);
??
? ??? ??? ??? ?url: url,
? ? ? ? ? ? type: 'POST',
? ? ? ? ? ? cache: false,
? ? ? ? ? ? data: formData,
? ? ? ? ? ? processData: false,
? ? ? ? ? ? contentType: false,

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java與JSON數(shù)據(jù)的轉(zhuǎn)換實(shí)例詳解

    java與JSON數(shù)據(jù)的轉(zhuǎn)換實(shí)例詳解

    這篇文章主要介紹了java與JSON數(shù)據(jù)的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法

    解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法

    在使用 java -jar xxx.jar 命令運(yùn)行 Java 應(yīng)用程序時(shí),遇到了以下錯(cuò)誤:xxx.jar 中沒(méi)有主清單屬性,這個(gè)錯(cuò)誤表示 JAR 文件缺少必要的啟動(dòng)信息,本文將介紹該錯(cuò)誤的原因以及如何通過(guò)修改 pom.xml 文件來(lái)解決,需要的朋友可以參考下
    2024-11-11
  • Java Validation Api如何實(shí)現(xiàn)自定義注解

    Java Validation Api如何實(shí)現(xiàn)自定義注解

    這篇文章主要介紹了Java Validation Api如何實(shí)現(xiàn)自定義注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java web監(jiān)聽器統(tǒng)計(jì)在線用戶及人數(shù)

    java web監(jiān)聽器統(tǒng)計(jì)在線用戶及人數(shù)

    本文主要介紹了java web監(jiān)聽器統(tǒng)計(jì)在線用戶及人數(shù)的方法解析。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • idea常用配置之注釋快捷鍵方式

    idea常用配置之注釋快捷鍵方式

    這篇文章主要介紹了idea常用配置之注釋快捷鍵方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java使用Scala實(shí)現(xiàn)尾遞歸優(yōu)化來(lái)解決爆棧問(wèn)題

    Java使用Scala實(shí)現(xiàn)尾遞歸優(yōu)化來(lái)解決爆棧問(wèn)題

    Scala?作為一種多范式的編程語(yǔ)言,結(jié)合了面向?qū)ο蠛秃瘮?shù)式編程的特性,在?Scala?中,尾遞歸?是通過(guò)編譯器優(yōu)化來(lái)防止棧溢出問(wèn)題的,尾遞歸優(yōu)化是一種特殊的優(yōu)化方式,可以讓遞歸調(diào)用不使用新的棧幀,所以本文介紹了在Java項(xiàng)目中如何使用Scala實(shí)現(xiàn)尾遞歸優(yōu)化來(lái)解決爆棧問(wèn)題
    2024-10-10
  • 基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析

    基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析

    這篇文章主要介紹了基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot中filter的用法詳解

    springboot中filter的用法詳解

    本篇文章主要介紹了springboot中filter的用法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Springboot整合pagehelper分頁(yè)功能

    Springboot整合pagehelper分頁(yè)功能

    這篇文章主要為大家詳細(xì)介紹了Springboot整合pagehelper分頁(yè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Spring創(chuàng)建IOC容器的方式解析

    Spring創(chuàng)建IOC容器的方式解析

    這篇文章主要介紹了Spring創(chuàng)建IOC容器的方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

满洲里市| 璧山县| 新疆| 四平市| 望奎县| 河西区| 察隅县| 拉萨市| 象山县| 成安县| 苏尼特左旗| 湖北省| 田东县| 安岳县| 班戈县| 镇坪县| 襄樊市| 邓州市| 三明市| 尚志市| 沧州市| 札达县| 达日县| 南澳县| 永安市| 安康市| 郧西县| 安新县| 革吉县| 永丰县| 江北区| 龙口市| 盐边县| 阳曲县| 绥中县| 习水县| 酒泉市| 东辽县| 亳州市| 柘荣县| 武隆县|