【发布时间】:2011-02-10 22:44:39
【问题描述】:
我想使用 Android 相机拍摄图像,但由于图像可能包含敏感数据,我不希望将图像保存到手机或 sd 卡中。相反,我想要一个 base64 字符串(压缩),它会立即发送到服务器
在 PhoneGap 中,文件似乎自动保存到不同的地方。 在本机上,我永远无法获取图像流 - 在 onJpegPictureTaken() 中,byte[] 参数始终为空。
谁能推荐一个方法?
【问题讨论】:
我想使用 Android 相机拍摄图像,但由于图像可能包含敏感数据,我不希望将图像保存到手机或 sd 卡中。相反,我想要一个 base64 字符串(压缩),它会立即发送到服务器
在 PhoneGap 中,文件似乎自动保存到不同的地方。 在本机上,我永远无法获取图像流 - 在 onJpegPictureTaken() 中,byte[] 参数始终为空。
谁能推荐一个方法?
【问题讨论】:
查看 Camera.onPreviewFrame() 和 YuvImage.compresstoJpeg() 以获得可以转换为位图的字节数组。
请注意,我认为 YuvImage.compressToJpeg() 仅在 SDK 8 或更高版本中可用。对于早期版本,您需要实现自己的 YUV 解码器。周围有几个例子,或者,我可以给你一个例子。
这两种方法可以让您在内存中获取相机图片,并且永远不会将其保存到 SD 中。请注意,大多数相机预览大小的位图会很快消耗内存,并且您需要非常小心地回收位图,并且可能还必须将它们缩小一点才能对它们做很多事情并且仍然适合本机堆限制在大多数设备上。
祝你好运!
【讨论】: