首页 文章

GrayScale(每像素8位)Java中的Image Pixel Manipulation

提问于
浏览
1

我听说 gray-scale 图像中带有 8-bits 颜色深度的数据存储在每个像素的一个字节的前7位中,最后一位保持不变!所以我们可以使用所有像素的最后一位存储一些信息,这是真的吗?

如果是这样,如何在单个像素中解释数据?我的意思是没有红色,蓝色和绿色!那些位是什么意思呢?

如何计算图像所有像素的平均值?我更喜欢使用纯java类而不是 JAI 或其他第三方 .

Update 1

BufferedImage image = ...; // loading image
image.getRGB(i, j);

getRGB方法总是返回一个大于一个字节的 int !我该怎么办?

1 回答

  • 0

    我的理解是8位颜色深度意味着每像素有8位(即一个字节),红色,Gren和蓝色都是这个值 . 例如greyscale = 192表示红色= 192,绿色= 192,蓝色= 192 . 没有7位加上另外1位 .

    AFAIK,您可以使用正常平均值 . 但是我会使用 long 作为和,并确保每个字节都是无符号的,即`b&0xff

    编辑:如果灰度是128(或0x80),我希望RGB为128,128,128或0x808080 .

相关问题