public class PixelColour extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = bi.createGraphics();
gbi.setColor(Color.black);
gbi.setBackground(Color.white);
gbi.drawLine(100, 100, 100, 200);
g2.drawImage(bi, null, 0, 0);
int rgb = bi.getRGB(100, 100);
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = (rgb & 0xFF);
System.out.println(red + " " + green + " " + blue);
}
public static void main(String[] args) throws IOException{
PixelColour pc = new PixelColour();
JFrame frame = new JFrame("Pixel colour");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(pc);
frame.setSize(500,500);
frame.setVisible(true);
}
}
在gbi.setbackgroundge(color.white)
之后添加gbi.clearrect(0,0,bi.getwidth(),bi.getheight());
ClearRect()
在图像上绘制背景色。如果您只是设置一个新的背景色,它不会改变图像。
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = bi.createGraphics();
gbi.setColor(Color.black);
gbi.setBackground(Color.white);
// here
gbi.clearRect(0, 0, bi.getWidth(), bi.getHeight());
gbi.drawLine(100, 100, 100, 200);
g2.drawImage(bi, null, 0, 0);
int rgb = bi.getRGB(50, 50); // off the black line
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = (rgb & 0xFF);
System.out.println(red + " " + green + " " + blue);
}
这个指纹
255 255 255
255 255 255
问题内容: 我正在读取BufferedImage中的像素颜色,如下所示: 现在,除了具有透明性的png之外,此方法都可以正常工作。我发现如果x,y指的是没有颜色的透明像素,我仍会读取一种颜色,通常与图像中其他位置使用的颜色相同。 如何检测像素实际上是透明的而不是彩色的? 谢谢 问题答案: 结果也是一个介于0(完全透明)到255(完全不透明)之间的值。
问题内容: 我正在尝试为组件的选定像素获取Swing JFrame的颜色。 例如,我想知道的给定的颜色在他们的点。 原因是我的组件是一个部分透明的覆盖层,在下面。对于不透明的像素,鼠标事件应由叠加层处理。对于透明像素,应将鼠标事件转发到下方。 这是这样做的方法吗? 问题答案: 我想说(希望这样做会带来更好的性能),也许,如果您愿意采用这种方法,则最好创建一个尺寸为1x1像素的图像,然后转换其创建的
问题内容: 谁能解释如何从BufferedImage获取rgb值数组? 我在BufferedImage中有一个灰度图像,需要提取一个描述图像的0到255个值的数组。 我知道BufferedImage是正确的,因为我可以将其保存为PNG。但是,如果使用,我会得到一堆巨大的负数。 我搜索了一段时间,并看到了一些有关转移某些值的参考资料([post]),但并不太了解他们在说什么。 基本上,我想从Buff
谁能解释一下如何从BufferedImage中获得一个rgb值数组? 我在BufferedImage中有一个灰度图像,需要提取一个描述图像的0到255个值的数组。 我知道BufferedImage是正确的,因为我可以将其保存为PNG。但是,如果我使用我得到一堆巨大的负数。 我搜索了一段时间,看到了一些关于转移一些价值观的参考(帖子),但并不真正理解他们在说什么。 基本上,我想从BufferedIm
我正在尝试将此java代码转换为python: 我在python中尝试过这个: 然而问题是我在python中得到不同的值。 为什么java返回负整数值,我如何在python中获得相同的结果?
我试图从bufferedimage中获取像素数据,该bufferedimage将只包含灰度半透明图像(argb)。我从图像中得到一个WritableRaster,并使用光栅的setPixels方法设置它的像素。使用此方法,我得到ArrayIndexOutOfBounds异常。在做了一些研究后,我发现BufferedImages在每个频带每个像素存储一个整数,而不是每个像素存储一个整数。也就是说,对