Java getRGB()结果不存在';t匹配从MS油漆滴管收到的结果

Java getRGB()结果不存在';t匹配从MS油漆滴管收到的结果,java,colors,rgb,bufferedimage,Java,Colors,Rgb,Bufferedimage,当我使用getRGB()并在这之后获得像素颜色红色、绿色或蓝色分量(这并不重要,因为它们在灰度图像中相等)并将结果与MS Paint滴管结果进行比较时,情况就不同了 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

当我使用getRGB()并在这之后获得像素颜色红色、绿色或蓝色分量(这并不重要,因为它们在灰度图像中相等)并将结果与MS Paint滴管结果进行比较时,情况就不同了

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");
}
}

这是我使用的图像链接

图像处于灰度模式

如何将灰度值转换为R,G,B是相当随意的

一种简单的方法是为每个R、G和B分量分配一个相同的灰度值

一个更复杂的方法是使用一些转换,考虑眼睛对这些不同组件的敏感性,或者考虑显示器或其他显示设备的轮廓


很明显,Java和您的程序正在使用不同的转换。但在任何一种情况下,精确的R、G和B值基本上都是无意义的:原始数据不是R、G、B格式。

“这是我使用的图像链接”你能在20Kb以下的图像中重现这种效果吗(相对于500Kb以上的图像)?在其他每一幅图像上,我在画图和程序中都能得到相同的RGB结果。问题只出现在这张图片上。你能解释一下吗?至少在没有看到其他图像,也可能没有看到MS Paint使用的转换算法的情况下,我无法解释确切的细节。但你似乎发明了一个不存在的“问题”:MS Paint没有内在的必要将灰度值转换为RGB,方法与Java或任何其他程序或库完全相同。