Android 如何从CameraX压缩图像/字节数组

Android 如何从CameraX压缩图像/字节数组,android,Android,我正在使用CameraX插件,当我拍照时,它会给我一个android.media.Image。 现在我想通过网络电话将图像作为byteArray发送。我找到了一个可以为我创建byteArray的函数: private suspend fun createBytesFromImage(input: Image): ByteArray { return withContext(ioDispatcher) { val buffer = input.planes[0].buffe

我正在使用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,但这似乎是错误的。如果可能的话,我正在寻找另一种方法)

使用
.setTargetResolution(大小(10801920))
打开
ImageCapture.Builder

根据您可以使用的分辨率计算文件大小