2012-03-06 16 views
6

私はアンドロイド携帯電話でポートレート方向の表面ビューにカメラを置こうとしています。私はhttp://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.htmlを使ってカメラをsurfaceViewに配置しました。しかし、カメラは90度回転しているので、私はsetDisplayOrientation(90)を使って修正しようとしましたが、画像を縮小します(おそらく、surfaceViewのサイズを適切に変更していませんか?私はどうやってそれを作ることができますので、カメラは押しつぶされていませんか?カメラがポートレートモードで伸びています

答えて

6

画像の回転に合わせて画像のサイズを変更する必要があります。例については、hereを参照してください。

+0

を持っていますか?私はプレビューが画面の約半分になるようにしたいが、値をハードコードしたくないので、別の画面サイズでも動作するようにしたい。 – user1154920

+0

これはSurfaceHolderコールバックメソッドなので、メソッドのheightパラメータとwidthパラメータはハードウェアプレビューを画面の半分にしたい場合は、単にif文で設定します:parameters.setPreviewSize(width/2、height/2); –

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"

関連する問題