像素来自java中JPG图像的精确值

时间:2014-11-05 06:56:54

标签: java image rgb pixel

有谁知道如何从JPG图像中获取精确值,例如:我创建的图像只包含0到255之间的值,此图像是灰度级的,这意味着:RGB值完全相同。另一方面,我确切地知道每个位置中每个像素的值,但是当我使用与原始值不匹配的getRGB()Im gettin值时。例如:

我有一个' 0'在[0] [0]位置,getRGB()返回一个十进制数字' 13&#39 ;;在下一个位置[0] [1]我有一个' 1'但是getRGB()返回一个十进制数字' 13'太......所以我知道这些值可能是因为图像的压缩。但是任何人都知道我可以做些什么调整以获得正确的值???

我将不胜感激任何帮助..

1 个答案:

答案 0 :(得分:2)

JPEG使用有损压缩算法:它牺牲了数据精度以实现更好的压缩。因此,您无法获得确切的RGB值。

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

同样BufferedImage.getRGB()返回引用javadoc的像素数据:

  

返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素。

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