首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >倾斜图像的高宽比摄像机预览

倾斜图像的高宽比摄像机预览
EN

Stack Overflow用户
提问于 2015-08-26 02:14:41
回答 1查看 545关注 0票数 0

我面临的问题是倾斜图像上的相机预览。

我的目标是在容器(FrameLayout).上缩放和填写摄像机预览

当我将setPreviewSize()设置为16:9时,以及当我试图将FrameLayout上的图像拉伸为16:9 (此视图可能大于显示屏幕大小以填充整个屏幕区域)时,摄像机预览上的图像开始倾斜,这让我非常困惑。

但是,如果我setPreviewSize()为16:9,FrameLayout为4:3,则相机预览上的图像一点也不偏斜。

Ex.Secenario #1图像倾斜

代码语言:javascript
复制
preview size -> w: 1920 h: 1080 (16:9) 

display size -> w: 1774 h:1080 (887:540) 

container size -> w: 1920 h: 1080 (16:9)

Ex.Secenario #2图像不偏斜

代码语言:javascript
复制
preview size -> w: 1920 h: 1080 (16:9)

display size -> w: 1774 h:1080 (887:540)

container size -> w: 1800 h: 1350 (4:3)

那么,相机预览的纵横比和它的容器之间的关系是什么呢?我现在很困惑为什么16:9预览大小与16:9的容器大小不兼容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-28 06:03:15

我发现意外的行为来自于不包括以下代码。在surfaceChanged()

代码语言:javascript
复制
@Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

        try {
            mCamera.stopPreview();
        } catch (Exception e){
            // ignore: tried to stop a non-existent preview
        }

        // Before do any configuration to camera
        // StopPreview() and StartPreview()
        // after finish it

        try {
            mCamera.setPreviewDisplay(mHolder);
            mCamera.startPreview();
        } catch (Exception e){
            Log.d(TAG, "Error starting camera preview: " + e.getMessage());
        }

}

重要:一些相机的功能不能随意改变。特别是,更改摄像机预览的大小或方向要求您首先停止预览,更改预览大小,然后重新启动预览。从Android4.0 (API级别14)开始,可以更改预览方向,而无需重新启动预览。

我只是误解了android文档中这个重要的注释。因此,如果您使用停止,然后配置您的相机预览分辨率或调整您的父布局与相机预览的纵横比相同。开始预览后,倾斜图像预览不会发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32216938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档