我正在编写一个小型Android应用程序,用户可以在相机的实时预览中放置图像并拍摄照片。然后,应用程序将适当地合并这两个图像 - 所有这一切都正常。
据我所知,您可以使用Camera.getParameters()获取/设置PreviewSize,我认为这与实时“相机Feed”的大小有关。
但是,显示相机预览的SurfaceView的大小与报告(和使用的)PreviewSizes的大小不同。例如,在模拟器中,我可用的SurfaceView恰好是360x215,而PreviewSize是320x240。尽管如此,整个SurfaceView仍然充满了预览。
但最终产生的图片(也是?)320x240。 android如何弥补尺寸和宽高比的这些差异?图像被截断了吗?
或者我只是误解了PreviewSize的含义 - 这与生成的图片的大小有关,还是与SurfaceView上投影的“实时预览”有关?是否有任何非平凡的相机示例可以解决这个问题?
我需要知道转换是如何进行的,最终将图像正确地复制/缩放到照片中,因此这些问题。
答案 0 :(得分:1)
我想弄清楚自己。这是我到目前为止发现的......
mSurface
的内部表面,实际上用作相机进纸和编码器进纸。所以这个缓冲区必须是你想要录制的实际大小。mSurface
方法将此SurfaceView
的大小设置为独立于setFixedSize
mSurface
需要1280x760分辨率,但SurfaceView
不能那么大(假设您在带有WVGA屏幕的手机上运行它) 。因此,您尝试将分辨率设置为小于1280x760,并保持相同的宽高比。SurfaceView
reoslutions mSurface
和previewSize
分辨率相同,因此合成的视频录制也具有相同的分辨率。话虽如此,我仍然在努力让我的VGA录像机在Nexus S上工作,它正在开发LG Maha设备。 :)