Last active
August 10, 2016 11:56
-
-
Save Cutta/22706818b263a6030cc94e8a3799aa6b to your computer and use it in GitHub Desktop.
Android ImageView Blurring
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void makeBlur(ImageView imageview) { | |
BitmapDrawable drawable = (BitmapDrawable) imageview.getDrawable(); | |
Bitmap bitmap = drawable.getBitmap(); | |
textView.setText("Radius: " + "" + radiusArr[position]); | |
Bitmap blurred = blurRenderScript(bitmap, 25); //second parametre is radius max:25 | |
imageview.setImageBitmap(blurred); //radius decide blur amount | |
} | |
@SuppressLint("NewApi") | |
private Bitmap blurRenderScript(Bitmap smallBitmap, int radius) { | |
try { | |
smallBitmap = RGB565toARGB888(smallBitmap); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
Bitmap bitmap = Bitmap.createBitmap( | |
smallBitmap.getWidth(), smallBitmap.getHeight(), | |
Bitmap.Config.ARGB_8888); | |
RenderScript renderScript = RenderScript.create(context); | |
Allocation blurInput = Allocation.createFromBitmap(renderScript, smallBitmap); | |
Allocation blurOutput = Allocation.createFromBitmap(renderScript, bitmap); | |
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(renderScript, | |
Element.U8_4(renderScript)); | |
blur.setInput(blurInput); | |
blur.setRadius(radius); // radius must be 0 < r <= 25 | |
blur.forEach(blurOutput); | |
blurOutput.copyTo(bitmap); | |
renderScript.destroy(); | |
return bitmap; | |
} | |
private Bitmap RGB565toARGB888(Bitmap img) throws Exception { | |
int numPixels = img.getWidth() * img.getHeight(); | |
int[] pixels = new int[numPixels]; | |
//Get JPEG pixels. Each int is the color values for one pixel. | |
img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); | |
//Create a Bitmap of the appropriate format. | |
Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888); | |
//Set RGB pixels. | |
result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment