相机显示不保持纵横比/似乎歪斜
Posted
技术标签:
【中文标题】相机显示不保持纵横比/似乎歪斜【英文标题】:Camera display doesn't maintain aspect ratio/seems skewed 【发布时间】:2011-10-06 08:05:30 【问题描述】:我在 android 中遇到了相机输入问题。在网上搜索了半天后,我没有进一步了解。
我想在这个阶段实现的是正确显示当前的相机输入。现在不多也不少。在横向模式下握住设备时,一切似乎都很好。但是,一旦我将设备切换为纵向,显示器似乎会水平缩放以匹配设备上屏幕的宽度。
为了更清楚地说明这个问题,我附上了两张照片:
Landscape (looks correct) Portrait (looks incorrect)API 示例中的相机示例似乎也会出现此问题,但当我使用设备中的相机应用程序时似乎不会出现此问题。很明显,那里正在发生其他事情。
我使用的代码是基于可以在互联网上找到的示例并且没有修改:
class Preview extends SurfaceView implements SurfaceHolder.Callback
SurfaceHolder mHolder;
Camera mCamera;
Preview(Context context)
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
public void surfaceCreated(SurfaceHolder holder)
mCamera = Camera.open();
try
mCamera.setPreviewDisplay(holder);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
public void surfaceDestroyed(SurfaceHolder holder)
mCamera.stopPreview();
mCamera = null;
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
API 示例使用方法“getOptimalPreviewSize(...)”,这听起来像是我需要的方法,但这并没有改变任何东西。为了尽可能简短,我把它留在这里了。
我是否遗漏了一些明显的东西或者这是预期的行为?
希望有人能指出正确的方向。
提前致谢!
保罗
【问题讨论】:
失真效果在附加图像中有点丢失。但是在横向图像上,计算机屏幕看起来是宽屏的。在纵向图像上,它看起来像一个方形屏幕。 你设置的预览分辨率是多少? 分辨率取决于设备。在本例中,Galaxy 选项卡上的分辨率为 1024 x 524。 好的,我自己找到了答案,但不幸的是,我作为新手不允许回答我自己的问题,我需要等待 5 个小时才能发布完整答案。但是诀窍如下: requestWindowFeature(Window.FEATURE_NO_TITLE);一旦我被允许,将发布完整的动机。 您好,您是否也遇到过这个问题:***.com/questions/16727836/…?谢谢 【参考方案1】:好的,我刚刚找到了我自己问题的答案。 我解决它的方法是全屏显示我的应用程序:
requestWindowFeature(Window.FEATURE_NO_TITLE);
这有点道理,因为我想我们不能只使用任何分辨率作为相机上的预览尺寸。我猜它会在内部捕捉到最接近的允许分辨率/纵横比,并且它不会做任何智能的事情,比如在保持纵横比的同时裁剪图像以匹配请求的分辨率。就我而言,我在源图像全屏时显示标题栏,然后缩小尺寸以适应屏幕。
我认为默认情况下不保持纵横比并且不裁剪图像有点愚蠢,
【讨论】:
是的,我现在也得出了同样的结论。不知道为什么相机不尊重纵横比,因为您想通过相机查看事物的外观。以上是关于相机显示不保持纵横比/似乎歪斜的主要内容,如果未能解决你的问题,请参考以下文章