我开发了一个应用程序,用户拍摄一张照片,然后将图像临时写入文件以检查网络连接,如果网络可用,请上传到服务器。低质量图像输出相机API
我一直在测试,它的工作原理就像一种享受。但是,我开始在LG Nexus 4上测试,图像质量很差。预览是完美的质量,但是当它上传并显示在应用程序中时,它的质量如此之低,甚至无法制作出图像。
我对三星s3和s4进行测试,显示的图像是完美的。我在onPictureTaken方法中记录了字节数组的大小,并且与其他两个设备产生的值相比,大小非常低。
我在日志中发现的猫,我得到这样的:
09-22 10:15:13.001 196-4548/? E/mm-camera﹕ sensor_load_chromatix: libchromatix_imx111_preview.so: 30
09-22 10:15:13.101 196-4548/? E/mm-camera﹕ vfe_ops_init: E
09-22 10:15:13.111 196-4548/? E/mm-camera﹕ vfe_legacy_stats_buffer_init: AEC_STATS_BUFNUM
09-22 10:15:13.111 196-4548/? E/mm-camera﹕ vfe_legacy_stats_buffer_init: AEC_STATS_BUFNUM
09-22 10:15:13.121 196-4548/? E/mm-camera﹕ mctl_init_stats_proc_info: snap_max_line_cnt =30096
09-22 10:15:13.131 174-174/? E/QCameraHWI﹕ android::status_t android::QCameraHardwareInterface::setPreviewWindow(preview_stream_ops_t*): mPreviewWindow = 0x0xb79ae9d8, mStreamDisplay = 0x0xb79a8448
09-22 10:15:13.131 174-174/? D/QCameraHWI﹕ android::status_t android::QCameraHardwareInterface::startPreview(): start preview now
09-22 10:15:13.131 174-174/? I/QCameraHWI﹕ android::status_t android::QCameraHardwareInterface::startPreview2():Setting ZSL mode
09-22 10:15:13.131 196-4548/? E/mm-camera﹕ config_proc_CAMERA_SET_INFORM_STARTPREVIEW
09-22 10:15:13.131 196-4548/? E/mm-camera﹕ config_update_stream_info Storing stream parameters for video inst 1 as : width = 640, height 480, format = 1 inst_handle = 810081 cid = 0
09-22 10:15:13.151 196-4548/? E/mm-camera﹕ config_update_stream_info Storing stream parameters for video inst 3 as : width = 640, height 480, format = 1 inst_handle = 830083 cid = 0
09-22 10:15:13.151 196-4548/? E/mm-camera﹕ config_update_stream_info Storing stream parameters for video inst 4 as : width = 512, height 384, format = 1 inst_handle = 840084 cid = 0
09-22 10:15:13.171 196-4548/? E/mm-camera﹕ config_decide_vfe_outputs: Ports Used 3, Op mode 1
09-22 10:15:13.171 196-4548/? E/mm-camera﹕ config_decide_vfe_outputs Current mode 0 Full size streaming : Disabled
09-22 10:15:13.171 196-4548/? E/mm-camera﹕ config_decide_vfe_outputs: Primary: 640x480, extra_pad: 0x0, Fmt: 1, Type: 1, Path: 1
09-22 10:15:13.171 196-4548/? E/mm-camera﹕ config_decide_vfe_outputs: Secondary: 640x480, extra_pad: 0x0, Fmt: 1, Type: 3, Path: 4
09-22 10:15:13.171 196-4548/? E/mm-camera﹕ config_update_inst_handles Updated the inst handles as 810081, 830083, 0, 0
09-22 10:15:13.312 196-4548/? E/mm-camera﹕ sensor_load_chromatix: libchromatix_imx111_zsl.so: 26
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ camif_client_set_params: camif has associated with obj mask 0x1
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ config_v2_CAMERA_START_common CAMIF_PARAMS_ADD_OBJ_ID failed -1
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ vfe_operation_config: format 3
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ vfe_operation_config:vfe_op_mode=5
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ Invalid ASD Set Params Type
09-22 10:15:13.402 196-4548/? E/mm-camera﹕ vfe_set_bestshot: Bestshot mode not changed
所以我只是要求,希望如果有人遇到过吗?还是会有人有任何关于它的信息,因为我不知道如何着手?
感谢
编辑 为了尝试解决这个问题,我添加以下代码:
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> supportedPreviewSizes = camera.getParameters().getSupportedPreviewSizes();
List<Camera.Size> supportedPictureSize = camera.getParameters().getSupportedPictureSizes();
Log.i("SUPPORTED SIZES: ", String.valueOf(supportedPreviewSizes.size()));
Log.i("SUPPORTED PICTURE SIZES: ", String.valueOf(supportedPictureSize.size()));
parameters.setPreviewSize(supportedPreviewSizes.get(0).width, supportedPreviewSizes.get(0).height);
parameters.setPictureSize(supportedPictureSize.get(1).width, supportedPictureSize.get(1).height);
正如我以为使用不支持的图片大小。
没有看到您的代码,很难提供帮助。很好,你在评论中解释说你没有使用意图 - 这是不可能从原始问题中理解的。无论如何,一个疯狂的猜测:你选择的Nexus 4相机不支持的图片尺寸和/或格式。 – 2014-09-23 08:48:19
@AlexCohn对不起,我认为在相关主题中提及Camera Api会自动排除我正在使用意图,并再次表示歉意。我其实并没有选择大小/格式,而是试图解决我在代码中添加的这个问题(我已经将它包含在上面的编辑中),但它不适用于我,所以我真的不知道是什么要做的是,之后我压缩了这些图像,但它是来自onpicturetaken的字节[],就我所知,这是问题所在! – 2014-09-23 09:28:46
那么,你的设备上的'supportedPictureSize.get(1)'是什么?它是相机还是前置摄像头? – 2014-09-23 12:48:53