13 Mayıs 2015 Çarşamba

Android Blur Resim Oluşturma (blur - image)

Şimdiye kadar üzerinde çalıştığım projeler arasında bir kaç kere blur görüntülerle uğraşmak zorunda kaldım. Bir çok metodunu buldum aslında ama kulağı ters taraftan tutmak vardır ya öyle yapmışlar gibi geldi bana =) Özellikle ilk defa blurlama işlemi ile uğraştığımda android geliştirmede yeniydim ve epey zorlanmıştım açıkçası. İkinci sefer karşılaştığımda o kadar zorlanmadım ama yine de uzun bir metoddu, Kod düzenime uymuyordu ve hakim olamıyordum kodlara tam manasıyla. Uğraşırken farklı örneklerde aslında özde aynı şeylerin yapıldığını gördüm bunları biraz derledim açıkçası ben de.
Androidde var olan şu kütüphaneleri kullanarak işlemlerimi gerçekleştiriyorum.

android.renderscript.RenderScript ,
 android.renderscript.ScriptIntrinsicBlur.
Kullandığım iki metodda blurluğun seviyesini  blur.setRadius(20.0f); satırında belirliyorum. Bu float değer 0 ile 25 değeri arasında kabul ediliyor sadece buna dikkat etmek lazım. Kodları indirmek istemeyen olursa kısaca burda örnek kodu yazayım.
İndirmek isteyenelr için link: https://github.com/Cutta/Simple-Image-Blur

imageview = (ImageView) itemView.findViewById(R.id.imageView); BitmapDrawable drawable = (BitmapDrawable) imageview.getDrawable();// var olan resmimizi bitmape ceviriyoruz Bitmap bitmap = drawable.getBitmap(); Bitmap blurred = blurRenderScript(bitmap, 20);//blurlanacak resmi ve, blur miktarini yolluyoruz imageview.setImageBitmap(blurred);// donen blur resmi ekranda gosteriyoruzz
@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; }






Hiç yorum yok:

Yorum Gönder