当我使用getRGB()之后,获得像素颜色红色或绿色或蓝色组件(因为它们在灰色图像中相等无关紧要)并将结果与MS Paint Eyedropper结果进行比较,其结果不同。
import java.awt.Color;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
public class Separator {
BufferedImage inputImg;
private int _inpupImgWidth;
private int _inpupImgHeight;
public Separator(){
try {
inputImg = ImageIO.read(new File("inputImg.bmp"));
_inpupImgWidth = inputImg.getWidth();
_inpupImgHeight = inputImg.getHeight();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(getGrayPixelData(60, 44));
try {
ImageIO.write(inputImg, "BMP", new File("outputImg.bmp"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void getGrayPixelData(int x, int y){
Color myColor = new Color(inputImg.getRGB(x, y));
System.out.println("Red: " + myColor.getRed());
System.out.println("Green: " + myColor.getGreen());
System.out.println("Blue: " + myColor.getBlue());
}
public static void main(String[] args) {
new Separator();
System.out.println("The End");
}
}
的图片链接
答案 0 :(得分:0)
图像处于灰度模式。
如何将灰度值转换为R,G,B是非常随意的。
一种天真的方法是为每个R,G和B组件分配相同的灰度值。
更复杂的方法是使用一些转换,考虑到眼睛对这些不同组件的敏感度,或者考虑到显示器或其他显示设备的配置文件。
很明显,Java和你的程序正在使用不同的转换。但在任何一种情况下,精确的R,G和B值基本上都没有意义:原始数据不是R,G,B格式。