通过Picasso加载RGB_565的位图

时间:2014-05-21 13:20:41

标签: android picasso

有没有办法传递bitmap-config或强制这个BitmapConfig?我不想通过Transformation()来做,因为这会占用比需要更多的CPU,我不确定这是否在缓存之前完成(我做这个的主要原因是缓存中的图像不应该消耗那么多记忆)

2 个答案:

答案 0 :(得分:56)

我找到了解决方案 - 毕加索2.2.0现在有一个API - 之前使用的是2.1.1,并且没有这方面的API。看起来像这样:

picasso.load(url).config(Bitmap.Config.RGB_565).into(target);

答案 1 :(得分:1)

我找到了一个很好的解决方案,非常好,100% (抱歉,@ ligi的回答对我不起作用)) 使用此util类进行任何毕加索位图更改(此处为RGB565)
注意也表示毕加索建立单身人士班 所以这只改变将涵盖所有其他(如果你不计划在任何地方使用RGB565)

import com.squareup.picasso.Transformation;

public class Config565Transformation implements Transformation {

    @Override
    public Bitmap transform(Bitmap source) {
        Bitmap resultBitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(resultBitmap);
        Paint paint = new Paint();
        paint.setFilterBitmap(true);
        canvas.drawBitmap(source, 0, 0, paint);
        source.recycle();
        return resultBitmap;
    }

    @Override
    public String key() {
        return Config565Transformation.class.getSimpleName();
    }
}

并简单地使用它

Picasso.with(getContext())
    .load(url)
    .transform(new Config565Transformation())
    .into(imageView);

参考:https://habrahabr.ru/post/218453/