我试图获取一个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数组,但无法围绕我应该使用的内容。如果我将方法(和结果对象)的返回类型更改为位图,代码正在工作 - 但我想返回数组形状的像素。
由于
答案 0 :(得分:5)
您应该将字节[]用于UNSIGNED_8,而不是int []。
答案 1 :(得分:0)
感谢蒂姆·默里(Tim Murray)的回答。
除了将 int [] 修改为 byte [] ,该数组的大小也应更改为:
bitmap.getWidth() * bitmap.getHeight() * 4
因为一个int可以分为四个字节。