java中二值位图,白色为1,黑色为0?
我使用 PixelGrabber 类来获取二值位图的像素数组。但是出现了一个问题,一个二值图像(白色或黑色),我将位图的这些像素存储在一个 int 数组中,数组的这些元素不应该是 1(白色)或 0(黑色),但在我的代码我发现白色是-1,黑色是-16777216。有人知道为什么吗?
现在我只想简单地使用 for
循环将 -1 和 -16777216 更改为 1 和 0。
I use class PixelGrabber
to get a two-value bitmap's pixel array. But one problem comes out, a two-value image(white or black), I stored these pixels of the bitmap in a int array, these elements of the array shouldn't be 1(white) or 0(black) but in my code I find white is -1 and black is -16777216. Anyone know why?
Now I would like to just simply use a for
loop to change -1 and -16777216 to 1 and 0.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我假设您正在使用
PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
构造函数,在这种情况下你得到的是每个像素的 RGB 值的整数数组。因为它以 RGB 值的形式返回 - 您需要将这些值分开才能得到真正的 RGB 值。例如 RGB(255,255,255) 是白色,RGB(0,0,0) 是黑色。 API 参考给出了一个很好的例子如何正确地做到这一点。对于您问题中的
-16777216
数字,我进行了一个简单的测试,结果表明它实际上是黑色的:请遵循上面链接的 API 参考,了解如何正确处理像素数据的示例代码。
I'm assuming that you're using the
PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
constructor, in which case what you're getting back is an integer array of the RGB value of each pixel.Because it's coming back as an RGB value - you need to seperate out the values to give you a true RGB value. For example RGB(255,255,255) is White and RGB(0,0,0) is black. The API Reference gives a good example of how to do this properly. With the
-16777216
number in your question, I performed a simple test which shows that it is actually black:Follow the API reference linked above for example code of how to handle the pixel data correctly.