浅析Android高斯模糊实现方案
1、使用Glide
Glide.with(this) .load(service.getImageUri()) .dontAnimate() .error(R.drawable.error_img) //设置高斯模糊 .bitmapTransform(newBlurTransformation(this,14,3)) .into(imageview);
适用场景:动态配置的背景图片
2、对图片高斯模糊,需要先将图片转成bitmap对象
mportandroid.annotation.TargetApi; importandroid.content.Context; importandroid.graphics.Bitmap; importandroid.os.Build; importandroid.renderscript.Allocation; importandroid.renderscript.Element; importandroid.renderscript.RenderScript; importandroid.renderscript.ScriptIntrinsicBlur; publicclassBlurBitmapUtil{ //图片缩放比例(即模糊度) privatestaticfinalfloatBITMAP_SCALE=0.4f; /** *@paramcontext上下文对象 *@paramimage需要模糊的图片 *@return模糊处理后的Bitmap */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) publicstaticBitmapblurBitmap(Contextcontext,Bitmapimage,floatblurRadius){ //计算图片缩小后的长宽 intwidth=Math.round(image.getWidth()*BITMAP_SCALE); intheight=Math.round(image.getHeight()*BITMAP_SCALE); //将缩小后的图片做为预渲染的图片 BitmapinputBitmap=Bitmap.createScaledBitmap(image,width,height,false); //创建一张渲染后的输出图片 BitmapoutputBitmap=Bitmap.createBitmap(inputBitmap); //创建RenderScript内核对象 RenderScriptrs=RenderScript.create(context); //创建一个模糊效果的RenderScript的工具对象 ScriptIntrinsicBlurblurScript=ScriptIntrinsicBlur.create(rs,Element.U8_4(rs)); //由于RenderScript并没有使用VM来分配内存,所以需要使用Allocation类来创建和分配内存空间 //创建Allocation对象的时候其实内存是空的,需要使用copyTo()将数据填充进去 AllocationtmpIn=Allocation.createFromBitmap(rs,inputBitmap); AllocationtmpOut=Allocation.createFromBitmap(rs,outputBitmap); //设置渲染的模糊程度,25f是最大模糊度 blurScript.setRadius(blurRadius); //设置blurScript对象的输入内存 blurScript.setInput(tmpIn); //将输出数据保存到输出内存中 blurScript.forEach(tmpOut); //将数据填充到Allocation中 tmpOut.copyTo(outputBitmap); returnoutputBitmap; } }
不推荐:使用bitmap,频繁操作的话比较耗性能。
3、使用高斯模糊遮罩,可以对指定区域进行模糊,不需要处理单张图片(推荐!!)
推荐一个github上的项目,亲测有效。https://github.com/mmin18/RealtimeBlurView
app:realtimeOverlayColor="#00000000",这里设置成透明色,效果就如同直接对图片进行高斯模糊。
总结
以上所述是小编给大家介绍的Android高斯模糊实现方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。