判断 png 图片色彩位数(深度)

缘由

Android 项目 Apk 大小限制,对历史项目中的未压缩图片进行筛检并处理。
图片压缩(如: TinyPng),会将图片由 32-bit color 压缩为 8-bit color ,所以可以根据这个特征标识,将项目中未压缩的图片筛选出来,进行压缩处理。

未压缩图片

TinyPng 压缩后

实现

参考链接:获取图像文件的位深度

// Kotlin
val byteArr = ByteArray(26)
val fis = FileInputStream(srcFile)
fis.read(byteArr)
fis.close()

val bitsPerPixel = byteArr[25].and(0xff.toByte())

if (bitsPerPixel.toInt() != 3) {
    // 实践得知,8-bit color 的图片都是 3,此处都是未压缩的图片文件
    // 可以将图片统一导出,进行压缩处理
}

你可能感兴趣的:(判断 png 图片色彩位数(深度))