我试图找到一种从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组件。
答案 0 :(得分:3)
所以使用这个图像...
这段代码......
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对象。