在Android中裁剪并调整图像大小

我正在从磁盘读取图像并在ListView中的行内显示它。 图像文件大于需要在行的ImageView中显示的图像文件。 由于我需要将bitmaps缓存在RAM中以便更快地访问,我希望它们只能像ImageView一样大(85×85 dip)

现在我正在阅读文件中

bitmap = BitmapFactory.decodeFile(file);

ImageView负责缩放和裁剪它

机器人:scaleType = “centerCrop”

AFAIK这是将整个位图保留在内存中(因为我将其缓存在XD中)并且这很糟糕

如何从ImageView中删除此责任并在加载文件时执行裁剪+缩放? 所有位图将以85×85倾角显示,需要为’centerCrop’

在加载,裁剪和缩放之前,您可以找到图片的尺寸:

BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bmo = BitmapFactory.decodeFile(file.getAbsolutePath(), options); 

然后加载样本大小:

 ... options.inSampleSize = 1/2; bmo = BitmapFactory.decodeFile(file.getAbsolutePath(), options); ... = Bitmap.createScaledBitmap(bmo, dW, dH, false); 

不要忘记回收临时位图,否则你会得到OOME。

 bmo.recycle();