private Drawable fastBlur(Bitmap bkg, View view, float scaleFactor, float radius)
{
// long startMs = System.currentTimeMillis();
// float scaleFactor = 2;
// float radius = 25.2F;
// if (downScale.isChecked())
// {
// scaleFactor = 8;
// radius = 2;
// }
Bitmap overlay =
Bitmap.createBitmap(
(int) (view.getBackground().getIntrinsicWidth() / scaleFactor),
(int) (view.getBackground().getIntrinsicHeight()/ scaleFactor),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft() / scaleFactor, -view.getTop()
/ scaleFactor);
canvas.scale(1 / scaleFactor, 1 / scaleFactor);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(bkg, 0, 0, paint);
overlay = FastBlur.doBlur(overlay, (int) radius, true);
Drawable d = new BitmapDrawable(mContext.getResources(), overlay);
// statusText.setText(System.currentTimeMillis() - startMs + "ms");
return d;
{
// long startMs = System.currentTimeMillis();
// float scaleFactor = 2;
// float radius = 25.2F;
// if (downScale.isChecked())
// {
// scaleFactor = 8;
// radius = 2;
// }
Bitmap overlay =
Bitmap.createBitmap(
(int) (view.getBackground().getIntrinsicWidth() / scaleFactor),
(int) (view.getBackground().getIntrinsicHeight()/ scaleFactor),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft() / scaleFactor, -view.getTop()
/ scaleFactor);
canvas.scale(1 / scaleFactor, 1 / scaleFactor);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(bkg, 0, 0, paint);
overlay = FastBlur.doBlur(overlay, (int) radius, true);
Drawable d = new BitmapDrawable(mContext.getResources(), overlay);
// statusText.setText(System.currentTimeMillis() - startMs + "ms");
return d;
}
/**
* 把Drawable转换成Bitmap
* @param drawable
* @return Bitmap
*/
public Bitmap convertDrawableToBitmap(Drawable drawable){
return ((BitmapDrawable)drawable).getBitmap();
}
/**
* 把Bitmap转换成Drawable
* @param bitmap
* @return Drawable
*/
public Drawable convertBitmapToDrawable(Bitmap bitmap){
return new BitmapDrawable(bitmap);
}