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
更多关于HarmonyOS鸿蒙Next中图片压缩怎么调大小?只有个quality调质量,压缩完图片是3000宽度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,若需调整图片大小而不仅仅是质量,可以使用Image
组件的resize
方法。通过设置目标宽度和高度,可以精确控制图片尺寸。例如,使用Image.resize(width, height)
将图片调整为指定尺寸。若仅需调整宽度并保持比例,可计算相应高度。这样,图片不仅质量可控,尺寸也能满足需求。