java中图像的像素值表示

时间:2014-01-06 14:19:42

标签: java image-processing

我正在尝试使用以下代码

读取图像的像素值
 int[] pixel;
 BufferedImage imageA = ImageIO.read(new File("xyz.bmp"));
 for (int y = 0; y < imageA.getHeight(); ++y) {
 for (int x = 0; x < imageA.getWidth(); ++x) {
    pixel = imageA.getRaster().getPixel(x, y, new int[3]);  
}}

RGB的值分别存储在像素[0],像素[1]和像素[2]中,当我看到输出时,我看到的值在0到255之间。 我看到一些使用下面的代码来获取像素值

int pixel;
BufferedImage imageA = ImageIO.read(new File("xyz.bmp"));
for (int y = 0; y < imageA.getHeight(); ++y) {
for (int x = 0; x < imageA.getWidth(); ++x) {
       pixel = imageA.getRGB(x, y);
}}

当我看到特定像素的输出时,它是-14935264。这个值代表什么,以及上述两种方法之间的区别。

1 个答案:

答案 0 :(得分:0)

在第二种情况下,您得到一个int,其中包含低24位的RGB值。红色分量是23-16位,绿色分量是15-8位,蓝色分量是7-0位。

如果你想让组件脱离int:

int red = (pixel >> 16) & 0xFF;
int green = (pixel >> 8) & 0xFF;
int blue = pixel & 0xFF;

相反:

int pixel = (red << 16) | (green << 8) | blue;