Reputation: 103
I have blurred a bitmap with Androids Rederscript
private Bitmap createBitmap_ScriptIntrinsicBlur(Bitmap src, float r) {
//Radius range (0 < r <= 25)
if(r <= 0){
r = 0.1f;
}else if(r > 25){
r = 25.0f;
}
Bitmap bitmap = Bitmap.createBitmap(src.getWidth(), src.getHeight(),Bitmap.Config.ARGB_8888);
RenderScript renderScript = RenderScript.create(getActivity());
Allocation blurInput = Allocation.createFromBitmap(renderScript, src);
Allocation blurOutput = Allocation.createFromBitmap(renderScript, bitmap);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(renderScript,Element.U8_4(renderScript));
blur.setInput(blurInput);
blur.setRadius(r);
blur.forEach(blurOutput);
blurOutput.copyTo(bitmap);
renderScript.destroy();
return bitmap;
}
But the image isn't blurred enough.
Are there any possibilities to blur the image with a radius over 25.
And when I call the blur function multiple times the image stays as blurred as a single function call.So that doesn't work either.
Thank you for your help.
Upvotes: 6
Views: 4119
Reputation: 8909
I know you said that running it multiple times doesn't work, but here's what I'm doing.
Bitmap inputBitmap = Bitmap.createScaledBitmap(artistImage, artistImage.getWidth(), artistImage.getHeight(), false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
RenderScript rs = RenderScript.create(context);
for (int i = 0; i < 10; i++){
final Allocation input = Allocation.createFromBitmap(rs, outputBitmap); //use this constructor for best performance, because it uses USAGE_SHARED mode which reuses memory
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(25F);
script.setInput(input);
script.forEach(output);
output.copyTo(outputBitmap);
}
You may have been running a blur on your normal source image multiple times, which obviously wouldn't accomplish anything. This works for me, and can blur it an incredible amount depending on what i
is.
Upvotes: 11
Reputation: 1323
Upvotes: 18