我有一个byte
数组,系列为0和-1(255)。这是使用Otsu算法进行二值化的结果。我用过:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inDither = true;
opt.inPreferredConfig = Bitmap.Config.RGB_565; // I have tried ARGB_8888 aswell
Bitmap out = BitmapFactory.decodeByteArray(data, 0, data.length, opt);
不幸的是,它返回null。就像关于BitmapFactory.decodeByteArray()
的其他问题一样。
我已经测试了其他方法,比如嵌套for循环,它可以工作,但处理时间太长,特别是对于大型图像。
这是我目前用于生成二值化data
:
ptr = 0;
while (ptr < srcData.length)
{
monoData[ptr] = ((0xFF & srcData[ptr]) >= threshold) ? (byte) 255 : 0;
ptr ++;
}
我希望你能引导我找到解决这个问题的更好方法。谢谢!
答案 0 :(得分:2)
565是每像素使用2个字节的表示。
此外,decodeByteArray是一个读取压缩字节[]的方法(参见文档)。
以下是我要做的事情:
monoData[ptr] = ((0xFF & srcData[ptr]) >= threshold) ? 0xffffffff : 0xff000000;
nota:有一件事可以帮助你:decodeByteArray不知道你的图像的几何形状,因此当然不能将它解码为你所期望的。