首页 > 解决方案 > 如何从 CameraX 压缩图像/字节数组

问题描述

我正在使用 CameraX 插件,当我拍照时它会给我一个 android.media.Image。现在我想通过网络电话将图像作为 byteArray 发送。我找到了一个可以为我创建 byteArray 的函数:

private suspend fun createBytesFromImage(input: Image): ByteArray {
    return withContext(ioDispatcher) {
        val buffer = input.planes[0].buffer
        buffer.rewind()
        val bytes = ByteArray(buffer.capacity())
        buffer.get(bytes)
        return@withContext bytes
    }
}

图像非常大,我想压缩/缩小它以节省一些带宽。如何使用 android.media.Image 或 byteArray 执行此操作?

(我知道我可以从 byteArray 制作位图,压缩/缩小位图并从中制作新的 byteArray 但这似乎是错误的。如果可能的话,我正在寻找另一种方法)

标签: android

解决方案


改为.setTargetResolution(Size(1080,1920))使用ImageCapture.Builder

要根据分辨率计算文件大小,您可以使用此工具


推荐阅读