从PNG读取像素的RGB分量值((255,255,255))

时间:2014-05-21 06:10:54

标签: java python image-processing colors rgb

我试图找到一种从PNG文件中获取RGB值(R,G,B分量范围从0到255)的方法。在python中它的内容如下:

import Image
im = Image.open("dead_parrot.jpg") #Can be many different formats.
pix = im.load()
print im.size #Get the width and hight of the image for iterating over
print pix[x,y] #Get the RGBA Value of the a pixel of an image
pix[x,y] = value # Set the RGBA Value of the image (tuple)

我试图在Java中找到相同的功能。我试过了:

java.awt.image.BufferedImage.getRGB(int x, int y).

但是它给出了像-167667这样的意想不到的值。我需要的是一个元组(255,255,255)。我无法将getRGB的输出转换为此元组的值,我可以分别从中选择R,G和B组件。

2 个答案:

答案 0 :(得分:3)

所以使用这个图像...

Test

这段代码......

try {
    BufferedImage img = ImageIO.read(...);

    for (int x = 0; x < img.getWidth(); x++) {
        for (int y = 0; y < img.getHeight(); y++) {
            int rgb = img.getRGB(x, y);
            System.out.println(rgb + " = " + new Color(rgb, true));
        }
    }
} catch (IOException ex) {
    ex.printStackTrace();
}

它产生这个(样本)输出......

0 = java.awt.Color[r=0,g=0,b=0]
-16777216 = java.awt.Color[r=0,g=0,b=0]
-12779519 = java.awt.Color[r=61,g=0,b=1]
-12779519 = java.awt.Color[r=61,g=0,b=1]
-12779519 = java.awt.Color[r=61,g=0,b=1]
-16777216 = java.awt.Color[r=0,g=0,b=0]

因此,除非你能提供和示例(代码和图像)给出错误的输出和输出的期望,否则很难知道还有什么建议

答案 1 :(得分:1)

在java中,使用ImageIO.read("mypic.png")获取BufferedImage。之后,您可以使用getData()方法为您提供可以调用getPixel的Raster对象。