我以这种方式构建了一个android自定义相机:
Error launching application on iPhone X.
当您单击“ TAKE PIC”按钮时,它将保存图像。
我的要求:应该保存用户在预览屏幕上看到的整个图像。
我面临的问题是,在某些手机中,保存的图像/位图不包含在屏幕上显示给用户的所有内容。
答案 0 :(得分:0)
正如@CommonsWare所解释的,不要求捕获的图片应与预览图片相同。您可以完全跳过camera.takePicture()
,然后在cameraPreview.takePicture()
中将最新的预览帧另存为位图。
这种方法的优点是可以确保您保存的图像与用户在预览中看到的图像相同,并且不会延迟。
缺点是camera.takePicture()
返回的图像的分辨率和质量可能明显更好。
如果您对预览帧质量不满意,可以为setPreviewSize()和setPictureSize()使用相同的大小getSupportedPreviewSizes()和getSupportedPictureSizes() :通常,您会找到满意的一对。
如果您对预览帧的分辨率不满意,请至少为setPreviewSize()和setPictureSize()选择相同的纵横比。当两者不匹配时,某些设备会产生非常奇怪的结果。
但是请注意,即使仅takePicture()
不可避免地发生延迟,这些步骤也不能保证捕获的图像与预览的图像相同。
另一句话:如果您定位到 Android N 及更高版本,请考虑从已弃用的 Camera API切换到 camera2 API。
>