相机在纵向模式下伸展

时间:2012-03-06 19:20:25

标签: android camera orientation

我正试图将相机放在Android手机上的纵向SurfaceView中。我使用http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html将相机放在surfaceView中。然而,相机旋转90度,所以我尝试使用setDisplayOrientation(90)来修复它,但这会压缩图像(它可能没有正确调整SurfaceView的大小?)。我该怎么做才能让相机不被挤压?

4 个答案:

答案 0 :(得分:6)

您需要根据旋转调整图像大小。有关示例,请参阅here

答案 1 :(得分:2)

如果您使用的是Android API演示,则需要修改OnLayout()功能。

基本上是Android API演示,根据宽高比设置预览大小,以便预览图像被压缩并在纵向模式下以小尺寸显示在屏幕中心。

即使我们将屏幕方向设置为纵向模式,也不会更改预览宽度和高度。 这就是预览图像被挤压的原因。

答案 2 :(得分:0)

唯一对我有用的是

代码mCamera.setDisplayOrientation(90);

fill_parentheight的布局width

清单文件有android:screenOrientation="portrait"

答案 3 :(得分:-2)

使用此功能调整大小图像对您有用

public Bitmap resize(Bitmap img,int Width,int Height){

    int width = img.getWidth();

    int height = img.getHeight();

    int newWidth = (int) Width;

    int newHeight = (int) Height;

    // calculate the scale - in this case = 0.4f
    float scaleWidth = ((float) newWidth) / width;

    float scaleHeight = ((float) newHeight) / height;

    // createa matrix for the manipulation
    Matrix matrix = new Matrix();

    // resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);

    // rotate the Bitmap
    //matrix.postRotate(45);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);

    return resizedBitmap;

}