Android實(shí)現(xiàn)圖片的高斯模糊(兩種方式)
在市面上很多的APP都使用了對(duì)圖片作模糊化處理后作為背景的效果,來(lái)使得整個(gè)頁(yè)面更具有整體感。如下就是網(wǎng)易云音樂(lè)的音樂(lè)播放頁(yè)面:
很明顯這個(gè)頁(yè)面的背景是由中間的小圖片模糊化后而來(lái)的。最常用的模糊化處理就是高斯模糊。
高斯模糊的幾種實(shí)現(xiàn)方式:
(1)RenderScript
RenderScript是Google在Android 3.0(API 11)中引入的一個(gè)高性能圖片處理框架。
使用RenderScriprt實(shí)現(xiàn)高斯模糊:
首先在在build.gradle的defaultConfig中添加RenderScript的使用配置
renderscriptTargetApi 24
renderscriptSupportModeEnabled true
renderscriptTargetApi :
指定要生成的字節(jié)碼版本。我們(Goole官方)建議您將此值設(shè)置為最低API級(jí)別能夠提供所有的功能,你使用和設(shè)置renderscriptSupportModeEnabled為true。此設(shè)置的有效值是從11到
最近發(fā)布的API級(jí)別的任何整數(shù)值。
renderscriptSupportModeEnabled:
指定生成的字節(jié)碼應(yīng)該回落到一個(gè)兼容的版本,如果運(yùn)行的設(shè)備不支持目標(biāo)版本。
下面就是使用RenderScriprt實(shí)現(xiàn)高斯模糊的方法:
public static Bitmap blurBitmap(Context context, Bitmap bitmap) { //用需要?jiǎng)?chuàng)建高斯模糊bitmap創(chuàng)建一個(gè)空的bitmap Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); // 初始化Renderscript,該類提供了RenderScript context,創(chuàng)建其他RS類之前必須先創(chuàng)建這個(gè)類,其控制RenderScript的初始化,資源管理及釋放 RenderScript rs = RenderScript.create(context); // 創(chuàng)建高斯模糊對(duì)象 ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); // 創(chuàng)建Allocations,此類是將數(shù)據(jù)傳遞給RenderScript內(nèi)核的主要方 法,并制定一個(gè)后備類型存儲(chǔ)給定類型 Allocation allIn = Allocation.createFromBitmap(rs, bitmap); Allocation allOut = Allocation.createFromBitmap(rs, outBitmap); //設(shè)定模糊度(注:Radius最大只能設(shè)置25.f) blurScript.setRadius(15.f); // Perform the Renderscript blurScript.setInput(allIn); blurScript.forEach(allOut); // Copy the final bitmap created by the out Allocation to the outBitmap allOut.copyTo(outBitmap); // recycle the original bitmap // bitmap.recycle(); // After finishing everything, we destroy the Renderscript. rs.destroy(); return outBitmap; }
(2)Glide實(shí)現(xiàn)高斯模糊
Glide是一個(gè)比較強(qiáng)大也是比較常用的一個(gè)圖片加載庫(kù),Glide中的Transformations用于在圖片顯示前對(duì)圖片進(jìn)行處理。glide-transformations 這個(gè)庫(kù)為Glide提供了多種多樣的 Transformations實(shí)
現(xiàn),其中就包括高斯模糊的實(shí)現(xiàn)BlurTransformation
compile 'com.github.bumptech.glide:glide:3.7.0' compile 'jp.wasabeef:glide-transformations:2.0.1'
通過(guò)這兩個(gè)庫(kù)的結(jié)合使用,就可以使用其中的BlurTransformation實(shí)現(xiàn)圖片的高斯模糊
Glide.with(context).load(R.drawable.defalut_photo).bitmapTransform(new BlurTransformation(context, radius)).into(mImageView);
其中radius的取值范圍是1-25,radius越大,模糊度越高。
以上所述是小編個(gè)大家介紹的Android實(shí)現(xiàn)圖片的高斯模糊,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Android指紋識(shí)別認(rèn)識(shí)和基本使用詳解
這篇文章主要為大家詳細(xì)介紹了Android指紋識(shí)別認(rèn)識(shí)和基本的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07零基礎(chǔ)學(xué)習(xí)教程之Linux下搭建android開(kāi)發(fā)環(huán)境
這篇文章主要介紹了Linux下搭建android開(kāi)發(fā)環(huán)境,特別適合零基礎(chǔ)的同學(xué)學(xué)習(xí),想要在Linux及ubuntu11.10下配置android4.0.3開(kāi)發(fā)環(huán)境的朋友可以參考一下2015-12-12Android Studio新建工程默認(rèn)在build.gradle中加入maven阿里源的問(wèn)題
這篇文章主要介紹了Android Studio新建工程默認(rèn)在build.gradle中加入maven阿里源的問(wèn)題,本文通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03分享一個(gè)輕量級(jí)圖片加載類 ImageLoader
這篇文章給大家分享一個(gè)輕量級(jí)圖片加載類 ImageLoader,需要的朋友可以參考下2016-08-08

Android基于CountDownView的時(shí)間控件擴(kuò)展

Android 自定義View之倒計(jì)時(shí)實(shí)例代碼

優(yōu)化SimpleAdapter適配器加載效率的方法

Android 媒體開(kāi)發(fā)之MediaPlayer狀態(tài)機(jī)接口方法實(shí)例解析