失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android中为网络图片设置高斯模糊效果

Android中为网络图片设置高斯模糊效果

时间:2023-02-01 18:23:03

相关推荐

Android中为网络图片设置高斯模糊效果

参考了这篇文章: Android:简单靠谱的动态高斯模糊效果

写一个方法,用来对Bitmap进行高斯模糊:

public static Bitmap blurBitmap(Bitmap bitmap ,Context context){//Let's create an empty bitmap with the same size of the bitmap we want to blur Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); //Instantiate a new Renderscript RenderScript rs = RenderScript.create(context); //Create an Intrinsic Blur Script using the Renderscript ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); //Create the Allocations (in/out) with the Renderscript and the in/out bitmaps Allocation allIn = Allocation.createFromBitmap(rs, bitmap); Allocation allOut = Allocation.createFromBitmap(rs, outBitmap); //Set the radius of the blur: 0 < radius <= 25 blurScript.setRadius(12.0f); //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;}

blurScript.setRadius(12.0f);//这个是设置模糊度,取值在0 < radius <= 25,值越大越模糊

既然是网络图片,用url生成Bitmap的方法如下:

/***@paramurlpath*@returnBitmap* 根据图片url获取图片对象*/public static Bitmap getBitMBitmap(String urlpath) {Bitmap map = null; try {URL url = new URL(urlpath); URLConnection conn = url.openConnection(); conn.connect(); InputStream in; in = conn.getInputStream(); map = BitmapFactory.decodeStream(in); //TODO Auto-generated catch block } catch (IOException e) {e.printStackTrace(); }return map;}

这个方法不能在UI线程中执行,又引出下面的部分,用Thread+Handler实现,代码如下:

Thread:

new Thread(new Runnable() {@Override public void run() {Bitmap bitmap = Utils.getBitMBitmap(headerImageUrl); Message msg = Message.obtain(); msg.what = 0; msg.obj = bitmap; handler.sendMessage(msg); }}).start();

Handler:

Handler handler = new Handler(){@Override public void handleMessage(Message msg) {if(msg.what == 0){Bitmap newBitmap = Utils.blurBitmap((Bitmap) msg.obj ,getActivity()); iv_parent.setImageBitmap(newBitmap); }}};

完毕

如果觉得《Android中为网络图片设置高斯模糊效果》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。