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

时间:2011-01-02 17:16:54

标签: java android image bitmap

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

现在我正在使用

阅读文件
  

bitmap = BitmapFactory.decodeFile(file);

并且ImageView负责缩放和裁剪

  

机器人:scaleType = “centerCrop”

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

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

1 个答案:

答案 0 :(得分:5)

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


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