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

4

我正在使用CameraX插件,在拍照时会给我一个android.media.Image。现在,我想将该图像作为byteArray发送到WebCall。我找到了一个可以为我创建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,但这似乎不太对。如果可能,我正在寻找另一种方法)

1个回答

2

使用 .setTargetResolution(Size(1080,1920)) 替代在 ImageCapture.Builder 上使用的方法。

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


我在Preview.Builder()中使用它,而不是ImageCapture.Builder()。 - kallis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接