为什么onPictureTaken(byte [] data,Camera camera)和onPreviewFrame(byte [] data,Camera camera)的数据字节数组大小不同。前者具有原始图像,因此给我一个清晰的图像,后者给了我一个像素化的图像。我没有使用onPictureTaken,因为它有时不会被触发。 如果我的照片尺寸为1600×1400的屏幕尺寸为800×480 onPictureTaken给了我1600×1400 和 onPreviewFrame给了我800×480onPictureTaken和onPreviewFrame上的数据字节数组大小不同
这是我的代码:
mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int format = parameters.getPreviewFormat();
//YUV formats require more conversion
if (format == ImageFormat.NV21 || format == ImageFormat.YUY2 || format == ImageFormat.NV16) {
int w = parameters.getPreviewSize().width;
int h = parameters.getPreviewSize().height;
// Get the YuV image
YuvImage yuv_image = new YuvImage(data, format, w, h, null);
}
我有一直困扰着这个问题一个星期。
P.S. - 在负的评分的情况下,请说明理由
有没有办法将编码的onPreviewFrame数组转换为onPictureTaken?最大支持的预览尺寸是800 x 480.在姜饼有时很少onPictureTaken没有触发。 –
@Rohit_Ramkumar:“有没有办法将编码的onPreviewFrame数组转换为onPictureTaken?” - 'onPictureTaken()'是一种方法。无法将预览图像转换为Java方法。 “并且最大支持的预览尺寸为800 x 480” - 可能在您的设备上,但预览尺寸因设备而异。 – CommonsWare
唯一的解决方案是onPictureTaken()?我正在尝试拍摄文件并上传。因此文件必须是可读的。 –