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

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

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

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

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;
/
/**
? ? ?* 請求調(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;
? ? ? ? /*如果圖片的原寬大于最大寬度,并且原高小于等于最大高度。則證明圖片過寬了,將圖片寬度設置為最大寬度,此時需要等比例減小高度*/
? ? ? ? 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();
? ? ? ? //轉(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 設置寬高px--->轉(zhuǎn)小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文件轉(zhuǎn)為formdata,Ajax傳到后臺
? ? formData = new FormData();
? ? formData.append('front', front);
??
? ??? ??? ??? ?url: url,
? ? ? ? ? ? type: 'POST',
? ? ? ? ? ? cache: false,
? ? ? ? ? ? data: formData,
? ? ? ? ? ? processData: false,
? ? ? ? ? ? contentType: false,

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    解決java-jar報錯:xxx.jar 中沒有主清單屬性的方法

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

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

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

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

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

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

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

    Java使用Scala實現(xiàn)尾遞歸優(yōu)化來解決爆棧問題

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

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

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

    springboot中filter的用法詳解

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

    Springboot整合pagehelper分頁功能

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

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

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

最新評論

徐汇区| 东莞市| 永城市| 合水县| 新昌县| 门头沟区| 彰化市| 延寿县| 平顶山市| 广昌县| 朝阳县| 沙河市| 宁夏| 临桂县| 石门县| 姜堰市| 体育| 宁乡县| 阿克| 孟州市| 从江县| 唐河县| 竹山县| 邢台市| 梁山县| 南陵县| 峨眉山市| 留坝县| 蒲城县| 常熟市| 贡嘎县| 泰宁县| 锦屏县| 南昌县| 琼中| 微博| 奈曼旗| 天峻县| 花莲市| 潞西市| 碌曲县|