HarmonyOS鸿蒙Next中图片压缩怎么调大小?只有个quality调质量,压缩完图片是3000宽度

HarmonyOS鸿蒙Next中图片压缩怎么调大小?只有个quality调质量,压缩完图片是3000宽度

let packOpts:PackOptions = { format:“image/jpeg”, quality:50 };

上面这个代码怎么调大小呢,比方我想把把图片压缩到720lpx

const photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select({ MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1 }, (error, result) => { if (result) { //压缩图片,先读取文件,并得到buffer const fileCompress = fs.openSync(result.photoUris[0],fs.OpenMode.READ_ONLY) const info = fs.statSync((fileCompress.fd)) const buffer = new ArrayBuffer(info.size) //fs.readSync以同步方法从文件读取数据。 fs.readSync(fileCompress.fd,buffer) //通过buffer创建一个imageSource,然后就可以对imageSource进行图片压缩了。 const imageSource = image.createImageSource(buffer); let packOpts:PackOptions = { format:“image/jpeg”, quality:50 }; const imagePackerApi = image.createImagePacker(); imagePackerApi.packToData(imageSource, packOpts).then( data => { //拿到压缩后的图片数据它是二进制数据格式,把它转成base64数据格式 const base64 = new util.Base64Helper() // //str是压缩好的base64图片数据,现在要通过post发到后端转成文件并进行保存 const imgData_base64 = base64.encodeToStringSync(new Uint8Array(data)) $post(’/upBase64’,{based4Data:imgData_base64}).then(res=>{ let key = ${chatUsername}_+Date.now() let content:Icontent = {type:‘pic’,value:[res[0].imgUrl??’’]} this.content = content myKvData.add(key,JSON.stringify(content)).then(()=>{ console.log(聊天内容数据写入成功${JSON.stringify(content)}) this.sendMessage() }).catch(err=>{ console.log(err.toString()) }) console.log(JSON.stringify(res)) }) }).catch(error=>{ console.error('Failed to pack the image. And the error is: '+ error); }) } });


更多关于HarmonyOS鸿蒙Next中图片压缩怎么调大小?只有个quality调质量,压缩完图片是3000宽度的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中图片压缩怎么调大小?只有个quality调质量,压缩完图片是3000宽度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若需调整图片大小而不仅仅是质量,可以使用Image组件的resize方法。通过设置目标宽度和高度,可以精确控制图片尺寸。例如,使用Image.resize(width, height)将图片调整为指定尺寸。若仅需调整宽度并保持比例,可计算相应高度。这样,图片不仅质量可控,尺寸也能满足需求。

回到顶部