gpt4 book ai didi

java - BitmapFactory.decodeByteArray() 在二值化位图上返回 null

转载 作者:行者123 更新时间:2023-12-02 07:35:37 27 4
gpt4 key购买 nike

我有一个包含 0 和 -1 (255) 系列的 byte 数组。这是使用 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 循环,它可以工作,但处理时间太长,尤其是对于大图像。

这是我目前用来生成二值化数据的方法:

ptr = 0;
while (ptr < srcData.length)
{
monoData[ptr] = ((0xFF & srcData[ptr]) >= threshold) ? (byte) 255 : 0;
ptr ++;
}

我希望你能引导我找到更好的方法来解决这个问题。谢谢!

最佳答案

565 是每个像素使用 2 个字节的表示形式。

此外,decodeByteArray 是一种读取压缩 byte[] 的方法(请参阅文档)。

这就是我要做的:

  • 使用 int[] 而不是 byte[]。
  • 初始化如下
  • 使用Bitmap.html#createBitmap()方法,结果为 int[]。此时使用的配置并不重要。


monoData[ptr] = ((0xFF & srcData[ptr]) >= 阈值) ? 0xffffffff:0xff000000;

注意:有一件事可以帮助您:decodeByteArray 不知道图像的几何形状,因此当然无法将其解码为您期望的内容。

关于java - BitmapFactory.decodeByteArray() 在二值化位图上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12281964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com