uniapp 上传图片时压缩图片

项目场景:

提示:这里简述项目相关背景:
最近用uniapp做一个上传图片,要把图片大小压缩到200kb,然后传给后端

插件

image-conversion:一个简单易用的JS图像转换工具,可以指定大小以压缩图像

安装插件

npm i image-conversion --save

引入

const imageConversion = require(“@/components/image-conversion”);

上传图片(将图像压缩到200kb)

// 限制上传图片为200kb
// 限制上传图片为200kb
export function uploadImgCompression(file, urls, tenantId) {
    
    
	return new Promise((resolve, reject) => {
    
    
		uni.chooseImage({
    
    
			count: 1, //默认9
			sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
			sourceType: ['album', 'camera'], //从相册选择
			success: function(res) {
    
    
			         	// 压缩图片
				         let name = res.tempFiles[0].name
				         //返回的是blob格式,后端请求是file格式  如果是blob格式无需转换
				         // 压缩到200KB,这里的200就是要压缩的大小,可自定义
				          imageConversion.compressAccurately(res.tempFiles[0], 200).then((res) => {
    
    
							  // 讲blob流转成file
							  let fileType = new File([res], name, {
    
     type: res.type })
							  if(fileType.name){
    
    
							  	var ext = fileType.name.split('.').pop()
							  }else{
    
    
							  	var ext= fileType.split('.').pop()
							  
							  }
							  // 获取当前blob流文件的一个内存URL
							   let blobPath=URL.createObjectURL(fileType)
							   let fileName = getFileName(file, Imgsrc) +'.'+ ext;
							   // 请求后台
								fileUpload("image", blobPath, fileName, urls, tenantId).then(res => {
    
    
									console.log(res);
									resolve(res)
								}).catch(err => {
    
    
									reject(err)
								});
				          });
			}
		})
	})
}

猜你喜欢

转载自blog.csdn.net/m0_46693606/article/details/129275733