眾所周知,android/195303.html">Picasso是一個在Android開發中經常使用到的圖片加載庫,常規用法一般是這樣:
Picasso.with(context) .load(img_url) .config(Bitmap.Config.RGB_565) .into(imageView);
還有不使用緩存的用法:
Picasso.with(context) .load(img_url) .config(Bitmap.Config.RGB_565) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) .into(imageView);
等等一系列用法不一一列舉,前段時間遇到一個需要使用高斯模糊的需求,起初找了一些處理的代碼,但后面發現Picasso在加載圖片的時候可以直接進行處理,所以去學習了一下這個用法,和其他用法一樣,各種點點點,這次是transform():
Picasso.with(context) .load(img_url) .config(Bitmap.Config.RGB_565) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) .transform(new BlurTransformation(this)) .into(imageView);
使用transform實現高斯模糊,其中關鍵代碼為BlurTransformation的實現:
public class BlurTransformation implements Transformation { RenderScript rs; public BlurTransformation(Context context) { super(); rs = RenderScript.create(context); } @Override public Bitmap transform(Bitmap bitmap) { Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED); Allocation output = Allocation.createTyped(rs, input.getType()); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setInput(input); //設置模糊半徑 script.setRadius(14); script.forEach(output); output.copyTo(blurredBitmap); bitmap.recycle(); return blurredBitmap; } @Override public String key() { return "blur"; }}新建好這個類后,則在Picasso使用是,作為參數給transform設置進去即可。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答