0

我正在尝试使用以下代码将图库中的图片加载到位图中:

Bitmap myBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(adress), (int)viewWidth/2, (int)viewHeight/2, false);

其中“地址”是图库中图片的地址。这在我的 Galaxy Note 1,android 版本 2.3.6 上运行良好,但由于我的 Galaxy 2,android 版本 4.1.2 上的“内存不足”而崩溃

我在这里做错了吗?有没有办法得到一个缩放的位图?生成的位图(当它起作用时)由于缩放而有点污迹,但我不介意。谢谢!!!

4

2 回答 2

2

使用这个方法

    Bitmap bm=decodeSampledBitmapFromPath(src, reqWidth, reqHeight);

执行-

     public int calculateInSampleSize(BitmapFactory.Options options,
        int reqWidth, int reqHeight) {

    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {
        if (width > height) {
            inSampleSize = Math.round((float) height / (float) reqHeight);
        } else {
            inSampleSize = Math.round((float) width / (float) reqWidth);
        }
    }
    return inSampleSize;
}

public Bitmap decodeSampledBitmapFromPath(String path, int reqWidth,
        int reqHeight) {

    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(path, options);

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

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    Bitmap bmp = BitmapFactory.decodeFile(path, options);
    return bmp;
}

}

于 2013-07-19T12:51:48.820 回答
0

直接是您的答案 - 您需要先计算尺寸,然后获取正确尺寸的图像

于 2013-07-19T12:49:28.877 回答