判断 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,此处都是未压缩的图片文件
    // 可以将图片统一导出,进行压缩处理
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容