我正在编写一个小型Android应用程序,用户可以在相机的实时预览中放置图像并拍摄照片.然后,应用程序将适当地合并这两个图像 - 所有这一切都正常.
我知道你可以使用Camera.getParameters()来获取/设置PreviewSize,我认为这与实时"相机提要"的大小有关.
但是,显示相机预览的SurfaceView的大小与报告(和使用的)PreviewSizes的大小不同.例如,在模拟器中,我可用的SurfaceView恰好是360x215,而PreviewSize是320x240.尽管如此,整个SurfaceView仍然充满了预览.
但最终产生的图片(也是?)320x240.android如何弥补尺寸和宽高比的这些差异?图像被截断了吗?
或者我只是误解了PreviewSize的含义 - 这与生成的图片的大小有关,还是与SurfaceView上投影的"实时预览"有关?是否有任何非平凡的相机示例可以解决这个问题?
我需要知道转换是如何发生的,最终将图像正确地复制/缩放到照片中,因此这些问题.
标题中所有答案的99.9%如下:
当你搜索
List<Camera.Size>,由Camera.Parameters#getSupportedPictureSizes()提供时,尝试找到与通过Camera.Parameters.html#setPreviewSize(int,int)设置的相机预览大小相同的宽高比的大小,或者尽可能接近尽可能.
这很好,但是如果我找不到与预览尺寸相同的宽高比的图片尺寸(Android不能保证对于相机支持的每个预览尺寸都有相同宽高比的图片尺寸),和所有其他图片尺寸(尽可能接近)只是拉伸我的照片,如此和这个问题?即使在Camera.Parameters中设置的图片大小和预览大小具有不同的宽高比,我如何制作与预览完全相同的宽高比的照片?