gpt4 book ai didi

java - 通过 X 和 Y 坐标获取图像中的十六进制颜色

转载 作者:行者123 更新时间:2023-12-01 09:23:17 24 4
gpt4 key购买 nike

我有 MouseListener 用于获取 X 和 Y 坐标,并且我需要在加载图像的 X 和 Y 坐标上获取 RGB/HEX 颜色。我有以下代码,但在线出现错误“找不到方法 getRGB()”:

new FrameTest().FrameTest().getRGB(x, y);

我的代码:

package frametest;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class FrameTest extends JFrame implements MouseListener
{
public static void main(String[] args) throws IOException
{
JFrame frame = new JFrame("FrameTest");
JLabel JLabel = new JLabel();

frame.add(new JLabel(new ImageIcon(new FrameTest().FrameTest())));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(1600, 900));
frame.pack();
frame.setLocationRelativeTo(null);
frame.addMouseListener(new MouseListener()
{
@Override
public void mouseClicked(MouseEvent e)
{
Point p = e.getPoint();
int x = e.getX();
int y = e.getY();

new FrameTest().FrameTest().getRGB(x, y);
System.out.println("X: " + x + "\nY: " + y + "\n\n");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
frame.setVisible(true);

}
public Image FrameTest()
{
try
{
BufferedImage image = ImageIO.read(new File("RIPME.png"));
return image;
} catch (IOException e)
{
System.err.print(e.getMessage());
return null;
}
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}

我怎样才能修复它并获得十六进制颜色/RGB颜色?谢谢。

最佳答案

getRGB 是类 java.awt.image.BufferedImage 的方法,而不是类 java.awt.Image 的方法。为了使用此方法,您需要一个 BufferedImage

类型的对象

解决此问题的两个选项:

  1. Change the return type of FrameTest() method to BufferedImage
  2. Type cast the Image object back to BufferedImage at the time of calling getRGB

在这种情况下,第一个选项应该是正确的选择

关于java - 通过 X 和 Y 坐标获取图像中的十六进制颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com