【问题标题】:getRGB() result doesn't match result received from MS Paint EyedroppergetRGB() 结果与从 MS Paint Eyedropper 收到的结果不匹配
【发布时间】:2012-11-04 14:35:57
【问题描述】:

当我使用 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");
}
}

这是我使用的图片链接http://postimage.org/image/t6tvlv941/

【问题讨论】:

  • “这里是我使用的图片链接” 你能在 20Kb 以下(而不是超过 500Kb)的图片中重现这种效果吗?

标签: java colors rgb bufferedimage


【解决方案1】:

图像处于灰度模式。

如何将灰度值转换为 R、G、B 是非常随意的。

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

更复杂的方法是使用一些转换,考虑到眼睛对这些不同组件的敏感度,或者考虑到显示器或其他显示设备的配置文件。

很明显,Java 和您的程序正在使用不同的转换。但无论哪种情况,精确的 R、G 和 B 值本质上是没有意义的:原始数据不是 R、G、B 格式。

【讨论】:

  • 在所有其他图像上,我在 Paint 和我的程序中得到相同的 RGB 结果。问题仅出现在这张特定的图片上。你能解释一下吗?
  • 至少没有看到其他图像,也没有看到 MS Paint 使用的转换算法,我无法解释确切的细节。但是您似乎在发明一个不存在的“问题”:MS Paint 没有内在的必要性以与 Java 或任何其他程序或库完全相同的方式将灰度值转换为 RGB。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多