Java Как узнать цвет фотографии? - PullRequest
1 голос
/ 11 ноября 2010

Как я могу распознать цвет, когда наведя курсор мыши на одну позицию фотографии?

BufferedImage image = new BufferedImage("blueball.jpg");
Project() {
    jFrame.setSize(new Dimension(500, 320));
    jFrame.getContentPane().setLayout(null);
    colorLabelText.setBounds(new Rectangle(310, 210, 50, 30));
    colorLabelText.setText("Color :");
    colorLabel.setBounds(new Rectangle(370, 210, 100, 30));
    photoLabel.setBounds(new Rectangle(20, 20, 220, 250));
    photoLabel.addMouseListener(new RecognizeColorActionListener());
    jFrame.getContentPane().add(photoLabel);
    jFrame.getContentPane().add(colorLabelText);
    jFrame.getContentPane().add(colorLabel);
    jFrame.setVisible(true);
}


     class RecognizeColorActionListener implements MouseListener {
    @Override
    public void mouseClicked(MouseEvent e) {
        int x = e.getX(); 
                       int y = e.getY(); 
                       int imgx = image.getMinX(); 
                       int imgy = image.getMinY(); 
                       int c = image.getRGB(x - imgx, y - imgy); 

Произошла ошибка java.lang.ArrayIndexOutOfBoundsException: координата выходит за границы!

1 Ответ

7 голосов
/ 11 ноября 2010

Проблема в том, что координаты X и Y мыши не соответствуют координатам X и Y изображения.Измените его на что-то вроде этого:

int x = e.getX();
int y = e.getY();
int imgx = image.getX();
int imgy = image.getY();
int c = image.getRGB(x - imgx, y - imgy);

Не указывайте меня точно по синтаксису, но это основная идея.

...