android - 如何从 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 但这似乎是错误的。如果可能的话,我正在寻找另一种方法)
解决方案
改为.setTargetResolution(Size(1080,1920))
使用ImageCapture.Builder
要根据分辨率计算文件大小,您可以使用此工具
推荐阅读
- php - 有逗号就单独捕获,没有RegEx就整体捕获
- ms-access - Google Drive 和 MS Access
- firebase - 无法解析 Android 应用程序模块 gradle 配置。解决或重新同步
- php - 如何获取UAPI源码,如何集成Cpanel.php文件
- angular - validate E-mail with white space with regular expression with angular form-builders
- python - Python 中的 2D EWT(经验小波变换)
- swift - 调整 UIView 内按钮的不透明度,不透明度为 0.5
- linux - 如何保留 QEMU VM 映像中的更改?
- c++ - 在我的情况下,如何删除代码重复 const_iterator 和迭代器?
- c++ - 关于将现有图转换为 BGL