HarmonyOS 鸿蒙Next PackingOption中quality数字取值范围及压缩程度定义 HarmonyOS 鸿蒙Next中PackingOption的quality数字0到100表示压缩程度如何确定?因图片上传需小图,但用户图片大小不定,故需根据选中图片大小调整
HarmonyOS 鸿蒙Next PackingOption中quality数字取值范围及压缩程度定义
HarmonyOS 鸿蒙Next中PackingOption的quality数字0到100表示压缩程度如何确定?因图片上传需小图,但用户图片大小不定,故需根据选中图片大小调整 PackingOption里面的quality数字取值范围0到100,这个数字表示的压缩程度到底是怎么定的 因为图片上传需要使用较小的图片,但是无法控制用户选择的图片大小,所以需要跟进选中的图片大小,始终把图片大小控制在指定大小范围内,这就需要动态计算需要的压缩程度quality
photoSelect() { const photoSelectOptions = new picker.PhotoSelectOptions(); photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; photoSelectOptions.maxSelectNumber = 5;
const photoPicker = new picker.PhotoViewPicker();
photoPicker.select(photoSelectOptions)
.then(async (photoSelectResult) => {
let uri = photoSelectResult.photoUris[0]
let file = fs.openSync(uri, fs.OpenMode.READ_ONLY)
this.compressPictures(file)
})
}
compressPictures(file: fs.File, data?: ArrayBuffer, size: number = 500, quality: number = 99): void | ArrayBuffer { if (data) { const currentSize = data.byteLength / 1024 if (currentSize <= size || quality === 1) { return data } } const imagePackerApi = image.createImagePacker(); const imageSourceApi = image.createImageSource(file.fd); let packOpts: image.PackingOption = { format: “image/jpeg”, quality: quality }
imagePackerApi.packing(imageSourceApi, packOpts)
.then((ret: ArrayBuffer) => {
if (data && ret.byteLength === data.byteLength) {
return ret
}
return this.compressPictures(file, ret, size, quality - 1)
}).catch((err: BusinessError) => {
console.log(lbh)
return false
})
}
更多关于HarmonyOS 鸿蒙Next PackingOption中quality数字取值范围及压缩程度定义 HarmonyOS 鸿蒙Next中PackingOption的quality数字0到100表示压缩程度如何确定?因图片上传需小图,但用户图片大小不定,故需根据选中图片大小调整的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next系统中,PackingOption
的 quality
参数用于定义图片的压缩程度,其取值范围为0到100。这个参数直接影响图片的压缩率和质量:
- quality = 0:表示最高程度的压缩,通常会极大地减小图片文件大小,但图片质量也会严重下降,可能出现明显的模糊或失真。
- quality = 100:表示最低程度的压缩,几乎不对图片进行压缩,保持原始图片的质量,但文件大小也几乎不变。
- 0 < quality < 100:在这个范围内,数值越高,压缩程度越低,图片质量保留得越好,但文件大小相对较大;数值越低,压缩程度越高,图片质量损失越多,但文件大小会显著减小。
对于根据选中图片大小调整压缩程度的需求,可以通过以下逻辑实现:
- 首先获取图片的原始大小。
- 根据应用对图片大小的需求设定一个目标大小范围。
- 通过实验或预设的算法,确定一个或多个
quality
值与图片大小之间的对应关系。 - 根据图片的原始大小和目标大小范围,选择合适的
quality
值进行压缩。
请注意,不同图片在相同quality
值下的压缩效果可能有所不同,具体效果需根据实际图片内容和应用需求进行测试和调整。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html