有谁知道如何从JPG图像中获取精确值,例如:我创建的图像只包含0到255之间的值,此图像是灰度级的,这意味着:RGB值完全相同。另一方面,我确切地知道每个位置中每个像素的值,但是当我使用与原始值不匹配的getRGB()Im gettin值时。例如:
我有一个' 0'在[0] [0]位置,getRGB()返回一个十进制数字' 13&#39 ;;在下一个位置[0] [1]我有一个' 1'但是getRGB()返回一个十进制数字' 13'太......所以我知道这些值可能是因为图像的压缩。但是任何人都知道我可以做些什么调整以获得正确的值???
我将不胜感激任何帮助..
答案 0 :(得分:2)
JPEG使用有损压缩算法:它牺牲了数据精度以实现更好的压缩。因此,您无法获得确切的RGB值。
如果您需要取回确切的RGB值,请使用PNG图像格式,该格式使用无损压缩算法。
同样BufferedImage.getRGB()
返回引用javadoc的像素数据:
返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素。
因此,如果您的灰度值在0..255
范围内,则getRGB()
返回的RGB值将在0...16777215
(16777215=0xffffff
)的范围内。 int
返回的getRGB()
不是灰色版本,而是包含RGB组件(如果它具有透明度,则为alpha)。