Камера растягивается в портретном режиме - PullRequest
6 голосов
/ 06 марта 2012

Я пытаюсь установить камеру на поверхность. Я использовал http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html, чтобы поместить камеру в SurfaceView. Однако камера поворачивается на 90 градусов, поэтому я попытался сделать setDisplayOrientation (90), чтобы исправить это, но это сдавливает изображение (вероятно, неправильно изменяет размер SurfaceView ??). Как сделать так, чтобы камера не сдавилась?

Ответы [ 4 ]

6 голосов
/ 06 марта 2012

Вам нужно изменить размер изображения в соответствии с поворотом. См. здесь для примера.

2 голосов
/ 31 июля 2012

Если вы использовали демоверсии Android API, вам нужно изменить функцию OnLayout().

По сути, демонстрация Android API устанавливает размер предварительного просмотра в соответствии с соотношением сторон, чтобы предварительное изображение было сжатым и отображалось в центре экрана небольшого размера в портретном режиме.

Даже если мы настроим ориентацию экрана в портретном режиме, ширина и высота предварительного просмотра не изменятся. Вот почему предварительный просмотр был сжат.

0 голосов
/ 03 сентября 2015

Единственное, что сработало для меня, это

В коде mCamera.setDisplayOrientation(90);

В макете есть fill_parent для height и width.

И файл манифеста имеет android:screenOrientation="portrait"

0 голосов
/ 31 июля 2012

используйте эту функцию для изменения размера изображения, она будет вам полезна

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;

} 
...