我一直在使用ScriptIntrinsicBlur來模糊其中一個實際填充了一個SOLID COLOR的位圖。但是我得到的模糊效果真的不合適。請檢查下面的圖片。白色部分實際上是我模糊的位圖。位圖實際上用純色填充整個窗口。ScriptIntrinsicBlur生成不適當的模糊
下面是可用於模糊編碼。
static Bitmap blurBackground(Context context, int color, int width, int height){
Log.d("AppLock","RENDER DONE in " + System.currentTimeMillis());
Bitmap bitmap = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(color);
canvas.save();
Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,true);
RenderScript renderScript = RenderScript.create(context);
Allocation inputAllocation = Allocation.createFromBitmap(renderScript,blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL
, Allocation.USAGE_SHARED);
Allocation outputAllocation = Allocation.createTyped(renderScript,inputAllocation.getType());
ScriptIntrinsicBlur bluerScript = ScriptIntrinsicBlur.create(renderScript,Element.A_8(renderScript));
bluerScript.setInput(inputAllocation);
bluerScript.setRadius(15f);
bluerScript.forEach(outputAllocation);
outputAllocation.copyTo(blurredBitmap);
bitmap.recycle();
renderScript.destroy();
Log.d("AppLock","RENDER DONE in " + System.currentTimeMillis());
return blurredBitmap;
}
我已經從這裏Link To Tutorial
下面的教程我已經看過成無數的帖子在這裏,我意識到,我應該使用ARGB_8888用於渲染腳本。另外我嘗試將Element更改爲Element.U8_4()。但它所做的只是給我一個200x200像素的位圖,它實際上填滿了整個窗口。我不知道我做錯了什麼。幫助將不勝感激。
我不明白。如果你模糊純色,你會得到純色。什麼意思?還是我誤解了一些東西? –
@Saehun肖恩哦,我真的不明白模糊如何工作。我想從鏈接中的圖片獲得類似的效果。 http://imgur.com/5hxYziV –