繁体   English   中英

Java中的GrayScale(每像素8位)图像像素处理

[英]GrayScale (8bit per pixel) Image Pixel Manipulation in Java

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

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

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

更新1

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

getRGB方法始终返回一个大于一个字节的整数 !!! 我该怎么办?

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

AFAIK,您只能使用正常平均值。 但是,我将使用long作为总和,并确保每个字节都是无符号的,即`b&0xff

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM