我正试图将相机放在Android手机上的纵向SurfaceView中。我使用http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html将相机放在surfaceView中。然而,相机旋转90度,所以我尝试使用setDisplayOrientation(90)来修复它,但这会压缩图像(它可能没有正确调整SurfaceView的大小?)。我该怎么做才能让相机不被挤压?
答案 0 :(得分:6)
您需要根据旋转调整图像大小。有关示例,请参阅here。
答案 1 :(得分:2)
如果您使用的是Android API演示,则需要修改OnLayout()
功能。
基本上是Android API演示,根据宽高比设置预览大小,以便预览图像被压缩并在纵向模式下以小尺寸显示在屏幕中心。
即使我们将屏幕方向设置为纵向模式,也不会更改预览宽度和高度。 这就是预览图像被挤压的原因。
答案 2 :(得分:0)
唯一对我有用的是
代码mCamera.setDisplayOrientation(90);
fill_parent
和height
的布局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;
}