缘由
Android 项目 Apk 大小限制,对历史项目中的未压缩图片进行筛检并处理。
图片压缩(如: TinyPng),会将图片由 32-bit color 压缩为 8-bit color ,所以可以根据这个特征标识,将项目中未压缩的图片筛选出来,进行压缩处理。
实现
// 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,此处都是未压缩的图片文件
// 可以将图片统一导出,进行压缩处理
}