当使用takepicture方法将OpenGL视图和Android相机混合以获得两者的图像时,图像会变形。我检查后发现,相机图片的大小设置为640X480,而OpenGL视图和相机预览都设置为1280x720。
因此,我将相机图片大小设置为1280x720,结果完美无缺。但是无法在代码中设置大小,因为每个Android设备都不同,并且每个设备的预览大小和图片大小设置都必须从支持的大小列表中选择。
考虑到这里有三个变量,即活动布局的屏幕大小、相机预览大小和图片大小,最佳方法是什么?
是最好使用match_parent或fitXY作为FrameLayout大小,并只使用两个变量,即预览大小和图片大小吗?
请注意,预览大小和图片大小中的多个宽度和高度组合是相同的。例如,1280 x 720存在于预览和图片中,是否总是存在匹配的大小?
List<Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();
List<Size> imageSizes = mCamera.getParameters().getSupportedPictureSizes();
// layout in the activity that the cameraView will placed in
int layoutWidth = frameLayout.getWidth();
int layoutHeight = frameLayout.getHeight();
例如,在一款安卓平板电脑上,针对使用的三个变量进行测量后,这些是结果:
活动中布局视图组的大小作为测量结果。
1280 x 736
支持的图片尺寸
320 x 240
640 x 480
1024 x 768
1280 x 720 << best size in my example to use
1280 x 768
1280 x 920
1600 x 1200
2048 x 1536
2560 x 1440
2560 x 1536
2560 x 1920 << native resolution of hardware camera
支持的预览尺寸
176 x 144
320 x 240
352 x 288
480 x 320
480 x 368
640 x 480
800 x 480
800 x 600
864 x 480
864 x 576
960 x 540
1280 x 720 << best size in my example to use
1280 x 768
1280 x 960
mCamera
是如何构建的? - Keith