如何在ImageView的显示它后得到位图的大小(How to get the size of bi

2019-07-20 17:07发布

我有一个ImageView的

<ImageView
        android:id="@+id/imgCaptured"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/captured_image" />

我捕获来自照相机的图像,转换该图像转换成位图。

Bitmap thumbnail;
thumbnail = MediaStore.Images.Media.getBitmap(getActivity()
                    .getContentResolver(), imageUri);

当我得到这个位图的分辨率在我上面的ImageView显示出来,像以前一样

Log.i("ImageWidth = " + thumbnail.getWidth(), "ImageHeight = "
                + thumbnail.getHeight());

它返回我ImageWidth = 2592 ImageHeight = 1936

在此之后我显示该位图在我的上述的ImageView作为imgCaptured.setImageBitmap(thumbnail); 然后我去我的ImageView的大小

Log.i("ImageView Width = " + imgCaptured.getWidth(),
                "ImageView Height = " + imgCaptured.getHeight());

这回我ImageView Width = 480 ImageView Height = 720

现在我的问题是,

  • 我怎样才能像位图的大小在我的ImageView显示它之后 。 我知道这可以通过使用这个来完成

     image.buildDrawingCache(); Bitmap bmap = image.getDrawingCache(); 

    但是这将创建大小相等的ImageView的新位图。

  • 我也想知道,是否图像中的ImageView的显示之后自动调整大小。 如果是,那么有没有什么办法来显示的ImageView图像而不调整图像大小。

编辑

其实我已经捕获的2592x1936的图像。 我在的ImageView显示该图像,这样做形象上的一些其他操作。 现在我想保存相同的2592x1936分辨率这一形象。 可能吗?

提前致谢。

Answer 1:

你在一个ImageView的显示位图后,ImageView的将创建一个BitmapDrawable对象绘制它的ImageView画布。 所以,你可以调用ImageView.getDrawable()方法来获取BitmapDrawable的参考,并获得通过调用Drawable.getBounds的边界(矩形RECT)方法。 通过界限,你可以计算的宽度和位图的高度ImageView的绘制

Drawable drawable = ImageView.getDrawable();
//you should call after the bitmap drawn
Rect bounds = drawable.getBounds();
int width = bounds.width();
int height = bounds.height();
int bitmapWidth = drawable.getIntrinsicWidth(); //this is the bitmap's width
int bitmapHeight = drawable.getIntrinsicHeight(); //this is the bitmap's height


文章来源: How to get the size of bitmap after displaying it in ImageView