私はアンドロイド携帯電話でポートレート方向の表面ビューにカメラを置こうとしています。私はhttp://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.htmlを使ってカメラをsurfaceViewに配置しました。しかし、カメラは90度回転しているので、私はsetDisplayOrientation(90)を使って修正しようとしましたが、画像を縮小します(おそらく、surfaceViewのサイズを適切に変更していませんか?私はどうやってそれを作ることができますので、カメラは押しつぶされていませんか?カメラがポートレートモードで伸びています
6
A
答えて
6
画像の回転に合わせて画像のサイズを変更する必要があります。例については、hereを参照してください。
2
Android APIデモを使用している場合は、OnLayout()
の機能を変更する必要があります。
基本的にAndroid APIデモでは、プレビューサイズをアスペクト比に応じて設定して、プレビュー画像を潰してポートレートモードで画面の中央に表示します。
画面の向きをポートレートモードに設定しても、プレビューの幅と高さは変更されません。 そのため、プレビュー画像が盛り上がったのはこのためです。
-2
使用リサイズ画像のため、この機能私のために働いた唯一のことは、コードmCamera.setDisplayOrientation(90);
レイアウトは両方のためのfill_parent
を持って
あります
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;
}
0
に有用であろうheight
およびwidth
。
とマニフェストファイルには、高さと幅はその一例であるべきかandroid:screenOrientation="portrait"
を持っていますか?私はプレビューが画面の約半分になるようにしたいが、値をハードコードしたくないので、別の画面サイズでも動作するようにしたい。 – user1154920
これはSurfaceHolderコールバックメソッドなので、メソッドのheightパラメータとwidthパラメータはハードウェアプレビューを画面の半分にしたい場合は、単にif文で設定します:parameters.setPreviewSize(width/2、height/2); –