我正在尝试使用此代码将图片中的图片加载到位图中:
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上的“内存不足”导致崩溃
我在这里做错了吗?有没有办法获得缩放位图? 生成的位图(当它确实有效时)由于缩放而有点污迹,但我不介意。 感谢!!!
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
this直接是您的答案 - 您需要先计算尺寸,然后以正确的尺寸获取图像