7

私はイメージビューを持っています

<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);

上記のイメージビューに表示する前に、このビットマップの解像度を取得すると、

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

それは私を返しますImageWidth = 2592 ImageHeight = 1936

この後、上記のイメージビューにこのビットマップを表示した後imgCaptured.setImageBitmap(thumbnail); 、イメージビューのサイズを次のように変更します

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

これは私を返しましたImageView Width = 480 ImageView Height = 720

今私の質問はそれです

  • イメージビューに表示した、そのビットマップのサイズを取得するにはどうすればよいですか。私はこれを使用してこれを行うことができることを知っています

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

    ただし、これにより、イメージビューと同じサイズの新しいビットマップが作成されます。

  • また、画像を画像ビューに表示した後、画像のサイズが自動的に変更されるかどうかも知りたいです。はいの場合、画像のサイズを変更せずに画像をimageviewに表示する方法はありますか。

編集

実際には 2592x1936 の画像をキャプチャしました。この画像を imageView に表示し、この画像に対して他の操作を行いました。この画像を同じ 2592x1936 の解像度で保存したいと思います。出来ますか?

前もって感謝します。

4

1 に答える 1

11

を に表示するBitmapImageViewImageViewBitmapDrawable オブジェクトが作成され、ImageView の Canvas に描画されます。そのため、メソッドを呼び出しImageView.getDrawable()て の参照を取得し、invoke ) メソッドBitmapDrawableで Bounds を取得できます。Drawable.getBounds(Rect 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
于 2013-02-28T05:59:09.257 に答える