像素';s java中JPG图像的精确值

像素';s java中JPG图像的精确值,java,image,rgb,pixel,Java,Image,Rgb,Pixel,有人知道如何从JPG图像中获得精确的值吗?例如:我创建了一个仅包含0-255的值的图像,该图像为灰度,这意味着:RGB值完全相同。另一方面,我确切地知道每个位置每个像素的值,但是当我使用getRGB()时,我得到的值与原始值不匹配。例如: 我在[0][0]位置有一个“0”,getRGB()返回一个十进制数字“13”;在下一个位置[0][1]中,我有一个“1”,但getRGB()也返回一个十进制数字“13”。。。伙计们,我知道这些值可能是因为图像的压缩。但是有人知道我可以做什么调整来获得正确的值吗

有人知道如何从JPG图像中获得精确的值吗?例如:我创建了一个仅包含0-255的值的图像,该图像为灰度,这意味着:RGB值完全相同。另一方面,我确切地知道每个位置每个像素的值,但是当我使用getRGB()时,我得到的值与原始值不匹配。例如:

我在[0][0]位置有一个“0”,getRGB()返回一个十进制数字“13”;在下一个位置[0][1]中,我有一个“1”,但getRGB()也返回一个十进制数字“13”。。。伙计们,我知道这些值可能是因为图像的压缩。但是有人知道我可以做什么调整来获得正确的值吗


我将非常感谢您的帮助。

JPEG使用有损压缩算法:它牺牲数据精度以实现更好的压缩。所以你无法得到精确的RGB值

如果需要返回精确的RGB值,请使用PNG图像格式,该格式使用无损压缩算法

还返回从javadoc引用的像素数据:

返回默认RGB颜色模型中的整数像素(键入\u INT \u ARGB)和默认sRGB颜色空间

因此,如果灰色值在
0..255
范围内,则
getRGB()
返回的RGB值将在
0…16777215
范围内(
16777215=0xffffff
)。由
getRGB()
返回的
int
不是灰色版本,而是包含RGB组件(以及alpha,如果它具有透明度)