Android压缩身份证不失真的代码
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import java.io.ByteArrayOutputStream
fun compressBitmap(bitmap: Bitmap, maxSize: Int): Bitmap {
var quality = 100
var stream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream)
while (stream.toByteArray().size / 1024 > maxSize) {
quality -= 5
stream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream)
}
val byteArray = stream.toByteArray()
return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
}
此示例中,我们使用了Android提供的Bitmap和BitmapFactory类。compressBitmap函数接受一个Bitmap对象和一个最大允许的大小(以KB为单位),并返回一个压缩后的Bitmap对象。函数会在保证图片不失真的情况下,不断减少图片质量,直到图片大小小于最大允许的大小为止。
使用实例:
val originalBitmap = BitmapFactory.decodeFile("/sdcard/id_card.jpg")
val compressedBitmap = compressBitmap(originalBitmap, 500) // 压缩到500KB以下
// 显示或保存压缩后的图片...

浙公网安备 33010602011771号