antd proプロジェクトの中でantd Uploadコンポーネントはlrzに基づいてアップロードする前に写真の圧縮をします.



lrz npmとパラメータドキュメントは参考にできます.
import { Upload,Button} from 'antd';
import lrz from 'lrz';

//    
function compress(file){
   try{
        let ratio=1;
        const {size}=file;
        
        //    1M   ,     
        if( (size!=undefined)&&size>1048576){

            //   1M   ,             1M  
            ratio=1048576/size + '';

            ratio=parseFloat(ratio).toFixed(2);
           
            console.log('    ',ratio);
            return lrz(file,{quality: ratio}).then((rst)=>{//    ,     
                console.log(rst)
                return backPromise(rst);  
            })
            .catch(()=>{
                console.log('    ');
                return false
            })
        }else{
            console.log('   ');
            return true;
        }
    }catch(e){}
}
function backPromise(res){
    return new Promise(function(resolve,reject){
        if(res instanceof Object){

        //     base64          

          let file=dataURLtoFile(res.base64,res.origin.name);
          console.log('base64tofile',file);
        
        //            uid        

          Object.assign(file,{uid:file.lastModified});
            resolve(file);
            console.log('  ')
        }else{
            reject('    ')
        }
     })
     
}

//         ,    copy ,       ,    。
 function dataURLtoFile(dataurl, filename){
    var arr = dataurl.split(',');
    var mime = arr[0].match(/:(.*?);/)[1];
    var bstr = atob(arr[1]);
    var n = bstr.length; 
    var u8arr = new Uint8Array(n);
    while(n--){
        u8arr[n] = bstr.charCodeAt(n);
    }
    //   file  
    return new File([u8arr], filename, {type:mime});
    //    blob  
    //return new Blob([u8arr],{type:mime});
}


//    
export default class CompressPict extends React.Component{
    constructor(props){
        super(props);
    }
    beforeUpload=(file)=>{
        console.log('file',file);
        const p=compress(file);

        //     :        ,      false      。
        //       Promise   ,
        //Promise    reject       
        //resolve      ( resolve    File   Blob       resolve     )。

        console.log(p);
        return p;
    }
   render(){
        return(
          
) } }