标题很好地解释了它。我成功拍摄了一张照片,然后将该字节数组转换为bmp,然后将bmp放在应该全屏的ImageView上。但它太小了。
该图片是预览顶部的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,默认等等,并且没有任何内容使图片全屏显示。
任何人都知道我需要做什么?
答案 0 :(得分:1)
我怀疑问题是你的图像分辨率不是很高。 ImageView
会尽一切努力来定位您的内容,但不会修改内容本身。在这种情况下,picPreview
视图可能正确填充父容器,但图像太小,因此居中而不是拉伸。
例如,您的屏幕可能是1920x1080,而该图片仅为1280x720。默认情况下,ImageView不会拉伸图像。
尝试将此添加到您的活动代码中:
ImageView imgView = (ImageView) findViewById(R.id.picPreview)
imgView.setScaleType(ScaleType.FIT_XY);
答案 1 :(得分:0)
想出来!问题是当我需要旋转图像本身(bmp)
时,我正在旋转ImageView