PixelReader и BufferdImage для значения пикселя - PullRequest
0 голосов
/ 13 апреля 2019

это изображение, которое я использую

Я работаю для фоторедактора Проект с javafx Есть кое-что, чего я не смог понять с помощью цветов

Я используюдва метода для чтения пикселей одного изображения

первый метод: PixelReader (getArgb)

второй метод: BufferedImage (getRGB)

да Я знаю, что A в Argb означает alphдля оптических

Я изменил значение на Красный, зеленый, Синий

, но нахожу разницу между значением с одним и тем же изображением

Может кто-нибудь объяснить мне, почему существуют разныезначение цвета 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);
        }
    }
...