浅析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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。