我必须截取桌面上某些区域的屏幕截图。 我是这样做的:
BufferedImage image = new Robot().createScreenCapture(area.areaRect);
ImageIO.write(image, "jpg", new File(current));
//then I paint in on JPanel
保存到.jpg的每个屏幕截图都是这样的:
pngs和GIF不会发生。
我搜索了这个问题并找到了一个解决方案,通过Toolkit类创建图像:
Image toolkitImage = Toolkit.getDefaultToolkit().createImage(imageUrl);
但我不知道如何用它截取屏幕截图。
答案 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