如何为Androids renderscript创建一个unsigned 8 int数组?

时间:2013-10-15 17:31:20

标签: android renderscript

我试图获取一个android.renderscript.Allocation对象将其结果写入int数组。代码很短,但我很难解读如何修复它。

int[] result = new int[bitmap.getWidth() * bitmap.getHeight()];
inAllocation = Allocation.createFromBitmap(mRS, src,Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
outAllocation = Allocation.createTyped(mRS, inAllocation.getType());
outAllocation.copyTo(result);

我得到的例外是:

10-15 19:21:07.084: E/AndroidRuntime(9021): Caused by: android.renderscript.RSIllegalArgumentException: 32 bit integer source does not match allocation type UNSIGNED_8

我的预感是我需要通过内置函数的Androids创建int数组,但无法围绕我应该使用的内容。如果我将方法(和结果对象)的返回类型更改为位图,代码正在工作 - 但我想返回数组形状的像素。

由于

2 个答案:

答案 0 :(得分:5)

您应该将字节[]用于UNSIGNED_8,而不是int []。

答案 1 :(得分:0)

感谢蒂姆·默里(Tim Murray)的回答。

除了将 int [] 修改为 byte [] ,该数组的大小也应更改为:

bitmap.getWidth() * bitmap.getHeight() * 4 

因为一个int可以分为四个字节。