Created
January 25, 2016 23:07
-
-
Save glnix/ebd37b3afaa1155b15ec to your computer and use it in GitHub Desktop.
Blur effect for ImageView
This file contains 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
package ru.goryachev.tmate; | |
import android.annotation.SuppressLint; | |
import android.content.Context; | |
import android.graphics.Bitmap; | |
import android.renderscript.Allocation; | |
import android.renderscript.Element; | |
import android.renderscript.RenderScript; | |
import android.renderscript.ScriptIntrinsicBlur; | |
public class Utils { | |
@SuppressLint("NewApi") | |
public static Bitmap blurRenderScript(Context context, 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); | |
blur.forEach(blurOutput); | |
blurOutput.copyTo(bitmap); | |
renderScript.destroy(); | |
return bitmap; | |
} | |
private static Bitmap RGB565toARGB888(Bitmap img) throws Exception { | |
int numPixels = img.getWidth() * img.getHeight(); | |
int[] pixels = new int[numPixels]; | |
img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); | |
Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888); | |
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