BufferedImage红色面具

时间:2013-06-07 08:40:17

标签: java

我必须截取桌面上某些区域的屏幕截图。 我是这样做的:

BufferedImage image = new Robot().createScreenCapture(area.areaRect);
ImageIO.write(image, "jpg", new File(current));
//then I paint in on JPanel

保存到.jpg的每个屏幕截图都是这样的:

enter image description here

pngs和GIF不会发生。

我搜索了这个问题并找到了一个解决方案,通过Toolkit类创建图像:

Image toolkitImage = Toolkit.getDefaultToolkit().createImage(imageUrl);

但我不知道如何用它截取屏幕截图。

1 个答案:

答案 0 :(得分:0)

ImageIO中的JPEG编写器在编写文件时不考虑ColorModel,因为JPEG没有alpha通道。 Alpha通道是A的{​​{1}}部分,用于指定每个像素的透明度值。 Most image clients will assume that JPEG don't have alpha values因为这是标准行为。

ARGB中的作者会写一个颜色偏移的文件,就像图片背景中可爱的鲑鱼色一样。这是因为当编写器真正应该在RBG中编写它们时,编写器会写下错误的值。

解决方法是将图像绘制为具有RBG作为ColorModel的BufferedImage。这是一些sample code

ImageIO