我正在尝试使用以下代码
读取图像的像素值 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。这个值代表什么,以及上述两种方法之间的区别。
答案 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;