我想在我的應用程序中使用RenderScript框架模糊位圖。我正在使用下面的代碼:ScriptIntrinsicBlur產生黑色位圖
public static Bitmap apply(Context context, Bitmap sentBitmap, int radius)
{
Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
final RenderScript rs = RenderScript.create(context);
final Allocation input = Allocation.createFromBitmap(rs, sentBitmap,
Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
final Allocation output = Allocation.createTyped(rs, input.getType());
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
script.setRadius(radius);
script.setInput(input);
script.forEach(output);
output.copyTo(bitmap);
return bitmap;
}
不幸的是,我所得到的代碼是黑色的位圖。我該如何解決這個問題?
位圖傳遞到下面的方式創建的apply
方法:
Bitmap b = Bitmap.createBitmap(thisView.getWidth(),
thisView.getHeight(),
Bitmap.Config.ARGB_8888);
這些位圖的寬度和高度的4
倍數也有通過的renderScript但我報道了一些錯誤不知道它們是什麼意思,我應該如何解決它們(ScriptIntrinsicBlur
的文檔很薄)。下面是這些錯誤:
20305-20391/com.xxx E/RenderScript﹕ rsi_ScriptIntrinsicCreate 5
20305-20391/com.xxx E/RenderScript﹕ rsAssert failed: mUserRefCount > 0, in
frameworks/rs/rsObjectBase.cpp at 112
編輯:
半徑是5和我運行在三星Galaxy Nexus的應用與Android 4.2.1。
運行中設置的「半徑」是多少?什麼版本的Android?查看rsObjectBase.cpp代碼,日誌斷言不在4.3.1或4.4.2源文件中。 –
@LarrySchiefer我已經更新了我的問題。你能看一下嗎? – Bobrovsky
您使用支持庫嗎?你應該使用支持庫。 –