调整相机预览大小

9
我实现了一个相机应用程序,它将在设备的整个屏幕上显示预览。但我的要求是在小屏幕上显示相机预览。我的设备分辨率为800x480(WxH),即Nexus one。我可以在不缩小预览的情况下在整个屏幕上显示预览。它表现得非常好,但是当我尝试在小屏幕上显示预览时(我的移动屏幕的一部分),预览会被拉伸并且看起来不好。
有没有办法在小屏幕上正确地显示预览。我认为我们需要缩小图像预览。但是当我尝试缩小图像预览时,安卓系统本身不允许设置缩小的预览大小。
请问有谁能帮我解决如何在小屏幕上缩放图像预览的问题。
2个回答

2

在为这个问题苦苦挣扎了一个星期后,我终于成功地通过编程让摄像头预览自动调整大小了!:-D

preview 是我的 SurfaceView 的名称,在这段代码中,我设置它会自动调整大小为它所在的 RelativeLayout 宽度的一半。

ViewGroup.LayoutParams params = preview.getLayoutParams();
RelativeLayout myRelLayout = (RelativeLayout) findViewById(R.id.myRelLayout);
params.width = (int) (myRelLayout.getWidth()/2);
preview.setLayoutParams(params);

现在,如果您要使用,请查看预览的分辨率,然后根据该分辨率相应地缩小高度或宽度。


另外,顺带一提,我在拍完第一张照片后发现我的相机预览画面出现了扭曲的问题。后来我发现需要在清单文件中添加以下代码才能解决这个问题。 :-)'<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="6"/>' - Jared

-1

uday,

你尝试过只是改变

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/preview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@id/ButtonGroup"
        />

转换成类似这样的形式...

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/preview"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_above="@id/ButtonGroup"
        />

如果这不是你要找的,也许你可以发布你当前的代码,这样我们就可以看一下?:-)


感谢Jared的回复。在发布这个问题之前,我已经尝试了上面提到的建议。我们可以减小预览大小(Surface View Size)。但是这里的主要问题在于预览屏幕。很难将相机预览正确地设置为与Surface View的大小相同(没有任何拉伸或缩小)。 - uday
uday,我在考虑一个可能的解决方案是通过编程确定所拍摄的图片(或预览)的大小,通过获取其尺寸,然后编程更改预览的大小以具有相同的纵横比。它会找出哪个尺寸过大(宽度或高度),然后缩小到需要的大小,使其符合正确的比例。如果可以,请让我知道,我会看看能否实现。 :-) - Jared

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接