Android: Renderscript 错误 - 无法从位图更新分配,大小不匹配
Android: Renderscript error - Cannot update allocation from bitmap, sizes mismatch
我正在尝试从网络加载照片并对其执行模糊处理,将模糊处理后的图像输出为单独的位图。我的代码如下所示:
URL url = new URL(myUrl);
mNormalImage = BitmapFactory.decodeStream(url.openStream());
final RenderScript rs = RenderScript.create( mContext );
final Allocation input = Allocation.createFromBitmap( rs, mNormalImage, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT );
final Allocation output = Allocation.createTyped( rs, input.getType() );
final ScriptIntrinsicBlur script;
script = ScriptIntrinsicBlur.create( rs, Element.U8_4( rs ) );
script.setRadius( 3.f );
script.setInput( input );
script.forEach( output );
output.copyTo( mBlurredImage );
我收到错误消息:
android.renderscript.RSIllegalArgumentException:
Cannot update allocation from bitmap, sizes mismatch
为什么会这样?
mBlurredImage
是在哪里创建的?发生这种情况是因为该位图的大小与输入不匹配。您应该使用类似以下内容创建它:
Bitmap mBlurredImage =
Bitmap.createBitmap(
mNormalImage.getWidth(),
mNormalImage.getHeight(),
mNormalImage.getConfig());
我正在尝试从网络加载照片并对其执行模糊处理,将模糊处理后的图像输出为单独的位图。我的代码如下所示:
URL url = new URL(myUrl);
mNormalImage = BitmapFactory.decodeStream(url.openStream());
final RenderScript rs = RenderScript.create( mContext );
final Allocation input = Allocation.createFromBitmap( rs, mNormalImage, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT );
final Allocation output = Allocation.createTyped( rs, input.getType() );
final ScriptIntrinsicBlur script;
script = ScriptIntrinsicBlur.create( rs, Element.U8_4( rs ) );
script.setRadius( 3.f );
script.setInput( input );
script.forEach( output );
output.copyTo( mBlurredImage );
我收到错误消息:
android.renderscript.RSIllegalArgumentException:
Cannot update allocation from bitmap, sizes mismatch
为什么会这样?
mBlurredImage
是在哪里创建的?发生这种情况是因为该位图的大小与输入不匹配。您应该使用类似以下内容创建它:
Bitmap mBlurredImage =
Bitmap.createBitmap(
mNormalImage.getWidth(),
mNormalImage.getHeight(),
mNormalImage.getConfig());