HarmonyOS 鸿蒙Next图片压缩后文件大小反而变大了
HarmonyOS 鸿蒙Next图片压缩后文件大小反而变大了 当使用ImagePacker进行图片质量压缩的时候,如果将原图直接压缩为100%质量,文件大小反而会变大,是什么原因?
console.log(">>>begin compress:" + uri)
const startTime = new Date().getTime()
const file = await fs.open(uri, fs.OpenMode.READ_ONLY)
const stat = await fs.stat(file.fd)
const fileSize = stat.size
console.log(`>>>original size:${fileSize} Bytes`)
const source = image.createImageSource(file.fd)
const packer = image.createImagePacker()
const packerOpt: image.PackingOption = {
format: "image/jpeg",
quality: 100
}
const helper = photoAccessHelper.getPhotoAccessHelper(context)
const asset = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, "jpg")
const tmpFile = await fs.open(asset, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
const packingResult = await packer.packing(source, packerOpt)
await fs.write(tmpFile.fd, packingResult)
// await packer.packToFile(source, tmpFile.fd, packerOpt)
const tmpStat = await fs.stat(tmpFile.fd)
const tmpFileSize = tmpStat.size
console.log(`>>>result size:${tmpFileSize} Bytes`)
await fs.close(tmpFile.fd)
更多关于HarmonyOS 鸿蒙Next图片压缩后文件大小反而变大了的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
quality不是基于原图的,这个是JPEG编码中的质量因子,图片质量并不会提升,而是编码算法变更了。可以大致理解为,如果原图质量为60,压缩后质量为100,可能压缩前4个像素点用一个字节表示,压缩后可能变成2个或3个像素点用一个字节表示,这就会导致压缩后文件大小会变大
更多关于HarmonyOS 鸿蒙Next图片压缩后文件大小反而变大了的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next系统中图片压缩后文件大小反而变大的问题,可能的原因包括:
-
压缩算法与参数设置:不同的压缩算法或参数设置可能导致压缩效果截然不同。如果使用的压缩算法或参数不适合当前图片类型或内容,可能导致压缩后的文件大小不减反增。
-
图片质量与分辨率:在压缩过程中,如果过分追求图片质量而牺牲了压缩率,或者图片的分辨率在压缩过程中被不当地调整,也可能导致文件大小增加。
-
元数据保留:部分压缩工具或软件在压缩图片时可能会保留原始图片的元数据(如拍摄时间、地点、设备等),这些额外的信息会增加压缩后的文件大小。
-
软件或系统bug:在HarmonyOS 鸿蒙Next系统的某些版本中,可能存在影响图片压缩功能的bug,导致压缩效果不佳。
为解决这一问题,建议检查并调整压缩算法和参数设置,确保选择适合当前图片类型的压缩方式。同时,也可以尝试使用不同的压缩工具或软件进行对比测试,以确定是否存在软件或系统层面的问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html