Android Picasso使用高斯模糊處理的示例代碼
眾所周知,Picasso是一個在Android開發(fā)中經(jīng)常使用到的圖片加載庫,常規(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);
等等一系列用法不一一列舉,前段時間遇到一個需要使用高斯模糊的需求,起初找了一些處理的代碼,但后面發(fā)現(xiàn)Picasso在加載圖片的時候可以直接進(jìn)行處理,所以去學(xué)習(xí)了一下這個用法,和其他用法一樣,各種點(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"; } }
新建好這個類后,則在Picasso使用是,作為參數(shù)給transform設(shè)置進(jìn)去即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Kotlin結(jié)合Rxjava+Retrofit實(shí)現(xiàn)極簡網(wǎng)絡(luò)請求的方法
這篇文章主要給大家介紹了關(guān)于Kotlin結(jié)合Rxjava+Retrofit實(shí)現(xiàn)極簡網(wǎng)絡(luò)請求的相關(guān)內(nèi)容,文中分別對Rxjava和Retrofit進(jìn)行了簡單的介紹,然后通過示例代碼詳細(xì)介紹了如何實(shí)現(xiàn)極簡網(wǎng)絡(luò)請求,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11詳解Android ViewPager2中的緩存和復(fù)用機(jī)制
最近接觸到豎向整頁滑動的需求,發(fā)現(xiàn)了viewpager2,viewpager2支持fragment,保留了viewpager的特性,下面這篇文章主要給大家介紹了關(guān)于ViewPager2中的緩存和復(fù)用機(jī)制的相關(guān)資料,需要的朋友可以參考下2021-11-11詳解基于Android的Appium+Python自動化腳本編寫
這篇文章主要介紹了詳解基于Android的Appium+Python自動化腳本編寫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Android控件BottomSheet實(shí)現(xiàn)底邊彈出選擇列表
這篇文章主要介紹了Android控件BottomSheet實(shí)現(xiàn)底邊彈出選擇列表,比較常用的選擇條件或跳轉(zhuǎn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08Thread、Handler和HandlerThread關(guān)系詳解
這篇文章主要介紹了Thread、Handler和HandlerThread關(guān)系詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09Android Drawerlayout實(shí)現(xiàn)側(cè)滑菜單效果
這篇文章主要為大家詳細(xì)介紹了Android Drawerlayout實(shí)現(xiàn)側(cè)滑菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10Android應(yīng)用啟動流程之從啟動到可交互的過程解析
這篇文章將給大家總結(jié)學(xué)習(xí)Android 基礎(chǔ)知識,Android應(yīng)用啟動流程,從啟動到可交互的過程解析,在學(xué)習(xí)過程中,大家最好是把源碼下載下來,感興趣的小伙伴跟著小編一起來看看吧2023-08-08