PixelReader和BufferdImage用于像素值

时间:2019-04-13 13:14:53

标签: javafx rgb bufferedimage rgba

this Image that I use it

我正在使用javafx进行照片编辑器项目 颜色有些我无法理解

我使用两种方法读取同一张图片的像素

第一种方法:PixelReader(getArgb)

第二种方法:BufferedImage(getRGB)

是的,我知道Argb中的A表示光学的Alph

我将值设置为Red,green,Blue

但是我发现具有相同图像的值之间存在差异

谁能解释我为什么相同像素的RGB颜色值不同?

   Image image = new Image("/images/DSC_0024.JPG");
    BufferedImage image2;
    try {
        image2 = ImageIO.read(getClass().getResource("/images/DSC_0024.JPG"));
    } catch (IOException ex) {
        Logger.getLogger(HomeController.class.getName()).log(Level.SEVERE, null, ex);
        return;
    }

    PixelReader pixelReader = image.getPixelReader();
    System.out.println(image.getHeight() + " , " + image.getWidth() + " , " + pixelReader.getPixelFormat().isWritable());
    for (int i = 0; i < image.getHeight(); i++) {
        for (int j = 0; j < image.getWidth(); j++) {

            Color c = new Color(image2.getRGB(j, i));
            Color c1 = new Color(pixelReader.getArgb(j, i));
            if(c.getRed() != c1.getRed() || c.getGreen() != c1.getGreen() || c.getBlue() != c1.getBlue())
                System.out.println(j + " , " + i);
        }
    }

0 个答案:

没有答案