ReactJS antd 環境中項目上傳圖片后壓縮(lrz的使用)


lrz說明 ( github地址 :https://github.com/think2011/localResizeIMG )

用於:在客戶端壓縮好要上傳的圖片可以節省帶寬更快的發送給后端,特別適合在移動設備上使用。

  • 解決了很多問題:

    • 圖片扭曲、某些設備不自動旋轉圖片方向,沒有jpeg壓縮算法..
    • 不支持new Blob,formData構造的文件size為0..
    • 還有某些機型和瀏覽器(例如QQX5瀏覽器)莫名其妙的BUG..
  • 按需加載(會根據對應設備自動異步載入JS文件,節省不必要帶寬)

  • 原生JS編寫,不依賴例如jquery等第三方庫,支持AMD or CMD規范。

基本格式

lrz(file, [options]);

解釋:

file: 通過 input:file 得到的文件,或者直接傳入圖片路徑。

[options] :這個參數允許忽略。
    width {Number} 圖片最大不超過的寬度,默認為原圖寬度,高度不設時會適應寬度;
    height {Number} 同上;
    quality {Number} 圖片壓縮質量,取值 0 - 1,默認為0.7;
    fieldName {String} 后端接收的字段名,默認:file;

返回結果是一個promise對象,有then()、catch()、always三個方法。

用法:(在react中,配合antd-mobile的ImagePicker 圖片選擇器使用lrz壓縮圖片,壓縮后的圖片是base64格式)

1、在項目中安裝lrz

npm install lrz 

2、在js文件中import lrz

import lrz from 'lrz';

3、項目中具體使用部分代碼

onImageChange01 = (files01, type, index) => {
        console.log(files01, type, index);
        if(type==='add'){
            lrz(files01[0].url, {quality:0.1})
                .then((rst)=>{
                    // 處理成功會執行
                    console.log('壓縮成功')
                    console.log(rst.base64);
                    this.setState({
                        imagesrc01:rst.base64.split(',')[1],
                    })
                })
        }else{
            this.setState({imagesrc01:''})
        }
        this.setState({
            files01,
        });
    }
 <div className="ImageFlex">
     <div className="ImageTitle"> 身份證正面照片:</div>
     <p className="ImageTip"> 支持jpg,png,gif,bmp,psd,tiff等圖片格式</p>
     <ImagePicker
        files={files01}
        onChange={this.onImageChange01}
        onImageClick={(index, fs) => console.log(index, fs)}
        selectable={files01.length < 1}
        multiple={this.state.multiple}
    />
 </div>

返回數據

1. base64 : 是壓縮過后base64圖片 , 可直接用於 img.src = rst.base64;

2. base64Len : 是生成后的base64的大小,后端可以通過此值來校驗是否傳輸完整 (如果采用base64上傳方式);

3. file 壓縮后的file對象,需要注意的是如果壓縮率太低的話,這個會是原始的file對象;

4. fileLen 生成后的圖片的大小,后端可以通過此值來校驗是否傳輸完整;

5. origin 也就是原始的file對象,里面存了一些原始文件的信息,例如大小,日期等;

 

 

 

文章來自:https://blog.csdn.net/wu_shuxuan/article/details/78902772

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM