0

私は自分のカメラアクティビティを書きました。写真のライブプレビューをで表示しますが、ライブ画像は自然に見えず、少し背が高いです。これは、の寸法がカメラの寸法と一致していないFrameLayoutためだと思います。FrameLayoutそれを修正するにはどうすればよいですか?

これがカメラアクティビティのxmlファイルです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<FrameLayout
    android:id="@+id/camera_preview"
    android:layout_width="wrap_content"
    android:layout_height="0dip"
    android:layout_weight="0.86" />

<Button
    android:id="@+id/button_capture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="16dp"
    android:gravity="center"
    android:onClick="capture"
    android:text="Capture" />

<Button
    android:id="@+id/button_accept"
    android:layout_width="115dp"
    android:layout_height="wrap_content"
    android:text="Accept"
    android:visibility="gone"
    android:onClick = "accept" />

<Button
    android:id="@+id/button_retake"
    android:layout_width="107dp"
    android:layout_height="wrap_content"
    android:text="Retake" 
    android:visibility="gone"
    android:onClick = "retake"/>

</LinearLayout> 
4

2 に答える 2

1

カメラから撮影した画像を拡大縮小する必要があります。あなたはこのようなことを試すことができます:

private Bitmap scaleImage(ImageView imageView, String path) {
int targetWidth = imageView.getWidth();
int targetHeight = imageView.getHeight();

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, bitmapOptions);
int photoWidth = bitmapOptions.outWidth;
int photoHeight = bitmapOptions.outHeight;

int scaleFactor = Math.min(photoWidth / targetWidth, photoHeight / targetHeight);

bitmapOptions.inJustDecodeBounds = false;
bitmapOptions.inSampleSize = scaleFactor;
bitmapOptions.inPurgeable = true;

return BitmapFactory.decodeFile(path, bitmapOptions);

}

于 2013-02-25T08:35:47.107 に答える
0

問題は次のように解決できます。

        Parameters cameraParam =  mCamera.getParameters() ;
        double ratio = (double)cameraParam.getPictureSize().height / (double)cameraParam.getPictureSize().width  ;
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        try
        {
            display.getSize(size);
        }
        catch(java.lang.NoSuchMethodError ignore)
        {
            size.x = display.getWidth(); 
            size.y = display.getHeight() ;
        }
        int width = size.y;
        int height = size.x;
        previewParam.width =  width;
        previewParam.height = (int)(previewParam.width / ratio) ;
于 2013-03-03T17:50:46.797 に答える