Как я могу извлечь цвета на изображении с помощью Java?

Я пытаюсь с помощью следующего кода, чтобы извлечь цвета в изображении. Я использую следующий код, но он не может получить цвета. Может кто-нибудь есть лучшее решение или, пожалуйста, скажите, что не так в моем коде.

public static void main(String args[]) throws IOException {
    File file = new File("image.png");
    BufferedImage image = ImageIO.read(file);
    //  int clr;
    int redd = 0;
    int greenn = 0;
    int bluee = 0;
    for (int i = 0; i < image.getHeight(); i++) {
        for (int j = 0; j < image.getWidth(); j++) {
            int clr = image.getRGB(i, j);
            redd = (clr & 0x00ff0000) >> 16;
            greenn = (clr & 0x0000ff00) >> 8;
            bluee = clr & 0x000000ff;

        }
    }
    System.out.println("Red Color value = " + redd);
    System.out.println("Green Color value = " + greenn);
    System.out.println("Blue Color value = " + bluee);

Любые предложения будут очень полезны, спасибо:-)

2 ответа

Возможно, вам лучше использовать библиотеку цветов Java для анализа компонентов RGB изображения:

Color clr = new Color(image.getRGB());
redd = c.getRed();
greenn = c.getGreen();
bluee = c.getBlue();

Вы видите, помогает ли это?

Вы можете использовать некоторые javafx features:

import javafx.scene.image.Image;
import javafx.scene.image.PixelReader;
import javafx.scene.paint.Color;

public class Test {
    public static void main(String[] args) {
        Image image = new Image("image.png");
        PixelReader reader = image.getPixelReader();
        Color c = reader.getColor(154, 87);
        System.out.println(c);
    }
}
Другие вопросы по тегам