package com.linroid.sky31radio.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicBlur;
import android.support.v8.renderscript.Allocation;
import com.squareup.picasso.Transformation;
import timber.log.Timber;
/**
* Created by linroid on 1/16/15.
*/
public class BlurTransformation implements Transformation {
Context ctx;
String url;
public BlurTransformation(Context ctx, String url) {
this.ctx = ctx;
this.url = url;
}
@Override
public Bitmap transform(Bitmap source) {
Timber.i("start bitmap transform");
try {
float radius = 10f;
Bitmap outputBitmap;
// if(Build.VERSION.SDK_INT >= 17){
outputBitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
RenderScript rs = RenderScript.create(ctx);
ScriptIntrinsicBlur sib = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, source);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
sib.setRadius(radius);
sib.setInput(tmpIn);
sib.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
source.recycle();
// }else{
// outputBitmap = FastBlur.doBlur(source, (int) radius, true);
// }
Timber.d("blur bitmap success");
return outputBitmap;
} catch (Exception e) {
Timber.e(e, "occur an error during blurring bitmap");
return source;
}
}
@Override
public String key() {
return url+"-blurred";
}
}