2014-05-21 12 views
14

Gibt es eine Möglichkeit, entweder eine Bitmap-Konfiguration zu übergeben oder diese BitmapConfig zu erzwingen? Ich möchte es nicht über Transformation() tun, da dies mehr CPU als benötigt verbrauchen würde und ich bin nicht sicher, ob dies vor dem Cache getan wird (mein Hauptgrund dafür ist, dass die Bilder im Cache nicht so viel verbrauchen) Speicher)Bitmap mit RGB_565 über Picasso laden

Antwort

51

Ich fand die Lösung - Picasso 2.2.0 hat jetzt eine API dafür - war 2.1.1 vorher und es gab keine API dafür. Sieht aus wie diese dann:

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

schöne Arbeit, vielen Dank – Devon

0

ich eine schöne Lösung gefunden habe, die sehr fein und 100%
(Sorry, aber Antwort von @ligi nicht funktioniert für mich])
Mit dieser util Klasse für jeden picasso arbeitet Bitmap-Änderungen (hier ist RGB565)
Hinweis auch, dass Picasso build Singletonklasse
so dass diese nur Änderungen werden alle anderen decken (auch wenn Sie RGB565 nicht planen, überall zu verwenden)

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

und es einfach

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

Referenz verwenden: https://habrahabr.ru/post/218453/