我对基于Java的图像处理一无所知,但是总体上我对图像处理了解很多,所以我将看看是否能给您提供任何想法。如果我错了,请不要射击我-我只是在提出一个主意。
在灰度图像中,红色,绿色和蓝色值都相同,即Red = Green = Blue。因此,当您调用getRGB并使用0xff进行AND运算时,您可能只会得到蓝色分量,但这没关系,因为红色和绿色是相同的-因为它是灰度的。
我怀疑问题在于,当您将其写回以创建新的输出图像时,您仅设置了蓝色组件,而不是设置了红色和绿色-它们应该仍然相同。尝试写回
original pixel + (original pixel << 8 ) + (original pixel <<16)
这样您不仅可以设置蓝色,还可以设置红色和绿色。