Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
public Bitmap blurBitmap(Bitmap bitmap){
//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(), Config.ARGB_8888);
//Instantiate a new Renderscript
RenderScript rs = RenderScript.create(getApplicationContext());
//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
blurScript.setRadius(25.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;
}
@Mariuxtheone

This comment has been minimized.

Copy link
Owner Author

Mariuxtheone commented May 25, 2014

This is a simple method you can use to apply a subtle Blur to bitmaps. This is done using Renderscript Intrinsics, a built-in function of Renderscript you can use out-of-the-box to achieve complex image manipulation like blur or matrix convolution.

More infos about Intrinsics here: http://android-developers.blogspot.it/2013/08/renderscript-intrinsics.html

@cbedoy

This comment has been minimized.

Copy link

cbedoy commented Oct 9, 2014

But this code only allow with api level 11....

@anugotta

This comment has been minimized.

Copy link

anugotta commented Oct 30, 2014

This supports API level 17 and Above.....

@prasad456

This comment has been minimized.

Copy link

prasad456 commented Feb 11, 2015

Hi,

I am getting two errors.

  1. The method U8_4(RenderScript) is undefined for the type Element.
  2. ARGB_8888 cannot be resolved or is not a field
@dka09

This comment has been minimized.

Copy link

dka09 commented May 20, 2016

No errors here, seems to be fine. Only checked on API23, Android Studio 2.1.1
Can this be used to blur part of an image? Like the example you show here: https://plus.google.com/+MarioViviani/posts/fhuzYkji9zz

@zeroarst

This comment has been minimized.

Copy link

zeroarst commented Jul 27, 2016

I wonder in the future if we can use radius greater than 25. Currently use loop to handle it but the performance is not good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.