您好,登錄后才能下訂單哦!
眾所周知,Picasso是一個(gè)在Android開發(fā)中經(jīng)常使用到的圖片加載庫(kù),常規(guī)用法一般是這樣:
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);
等等一系列用法不一一列舉,前段時(shí)間遇到一個(gè)需要使用高斯模糊的需求,起初找了一些處理的代碼,但后面發(fā)現(xiàn)Picasso在加載圖片的時(shí)候可以直接進(jìn)行處理,所以去學(xué)習(xí)了一下這個(gè)用法,和其他用法一樣,各種點(diǎn)點(diǎn)點(diǎn),這次是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實(shí)現(xiàn)高斯模糊,其中關(guān)鍵代碼為BlurTransformation的實(shí)現(xiàn):
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); //設(shè)置模糊半徑 script.setRadius(14); script.forEach(output); output.copyTo(blurredBitmap); bitmap.recycle(); return blurredBitmap; } @Override public String key() { return "blur"; } }
新建好這個(gè)類后,則在Picasso使用是,作為參數(shù)給transform設(shè)置進(jìn)去即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。