在android中的BitMap中拟合图像

时间:2016-11-21 12:27:57

标签: android android-bitmap

我想创建一个具有已定义大小的新位图,例如200x200

Bitmap b = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);

现在我的理解是将该位图放入SD卡的图像中,但将SD的图像调整为我创建的位图的大小。

使用以下方法执行使用ImageView的操作:

<ImageView android:src="@drawable/landscape"
    android:adjustViewBounds="false" />

我寻找的结果如下:

enter image description here

提前致谢。

编辑:发布我的代码

  public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,  int reqWidth,  int reqHeight) {

        // First decode with inJustDecodeBounds=true to check dimensions
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = false;
        BitmapFactory.decodeResource(res, resId, options);

        // Calculate inSampleSize
//        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeResource(res, resId, options);
    }

-

imageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.drawable.paisaje, 200, 200));

1 个答案:

答案 0 :(得分:1)

outWidth中的{p> outHeightBitmapFactory.Options未设置结果图像的宽度和高度。它们仅在您更改inSampleSizeinJustDecodeBounds设置为false时更改,否则用于读取图像的高度和宽度。

您可以尝试createScaledBitmap缩放位图并返回新的位图。

public Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {

    return Bitmap.createScaledBitmap(BitmapFactory.decodeResource(res, resId), reqWidth, reqHeight, true);
}