拍照,然后将图片放在ImageView上。试图让它全屏,但我无法弄明白。

时间:2015-04-19 22:05:01

标签: android

标题很好地解释了它。我成功拍摄了一张照片,然后将该字节数组转换为bmp,然后将bmp放在应该全屏的ImageView上。但它太小了。

The ImageView (which is supposed to be full screen) on top of the camera preview

该图片是预览顶部的ImageView(我刚刚拍摄的图片)。这是相关代码。

Camera.PictureCallback jpgCallback = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
        ImageView image = (ImageView) findViewById(R.id.picPreview);
        image.setImageBitmap(bmp);
        image.setRotation(90);
        image.setVisibility(View.VISIBLE);
    }
};

<SurfaceView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/surfaceView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Take Picture"
    android:id="@+id/takePicButton"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="#ff6cafff"
    android:textAlignment="center"
    android:enabled="true"
    android:onClick="takePic"/>

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/picPreview"
    android:layout_alignParentBottom="true"
    android:visibility="invisible"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"/>

我尝试将scaleType更改为center,centerCrop,默认等等,并且没有任何内容使图片全屏显示。

任何人都知道我需要做什么?

2 个答案:

答案 0 :(得分:1)

我怀疑问题是你的图像分辨率不是很高。 ImageView会尽一切努力来定位您的内容,但不会修改内容本身。在这种情况下,picPreview视图可能正确填充父容器,但图像太小,因此居中而不是拉伸。

例如,您的屏幕可能是1920x1080,而该图片仅为1280x720。默认情况下,ImageView不会拉伸图像。

尝试将此添加到您的活动代码中:

  ImageView imgView = (ImageView) findViewById(R.id.picPreview)
  imgView.setScaleType(ScaleType.FIT_XY);

答案 1 :(得分:0)

想出来!问题是当我需要旋转图像本身(bmp)

时,我正在旋转ImageView