【发布时间】:2013-08-10 13:39:54
【问题描述】:
我正在尝试捕获当前场景的屏幕截图并将其另存为 png/jpg 和 pdf。保存屏幕截图时,这两个选项都成功,但是图像显示不正确。如图所示,屏幕截图非常糟糕,我似乎无法让它工作。出于某种原因保存时,图像也很可爱。
public void sceneCapture() throws IOException, InterruptedException, Exception
{
File fa = new File("test.jpg");
snapshot = quotes.getScene().snapshot(null);
RenderedImage renderedImage = SwingFXUtils.fromFXImage(snapshot, null);
BufferedImage image = new BufferedImage(600, 750, BufferedImage.TYPE_INT_RGB);
image.setData(renderedImage.getData());
ImageIO.write(image, "jpg", fa);
int[] RGB_MASKS = {0xFF0000, 0xFF00, 0xFF};
ColorModel RGB_OPAQUE = new DirectColorModel(32, RGB_MASKS[0], RGB_MASKS[1], RGB_MASKS[2]);
java.awt.Image img = Toolkit.getDefaultToolkit().createImage("test.jpg");
PixelGrabber pg = new PixelGrabber(img, 0, 0, -1, -1, true);
pg.grabPixels();
int width = pg.getWidth(), height = pg.getHeight();
DataBuffer buffer = new DataBufferInt((int[]) pg.getPixels(), pg.getWidth() * pg.getHeight());
WritableRaster raster = Raster.createPackedRaster(buffer, width, height, width, RGB_MASKS, null);
BufferedImage bi = new BufferedImage(RGB_OPAQUE, raster, false, null);
String to = "test.jpg";
ImageIO.write(bi, "jpg", new File(to));
}
真的需要帮助解决这个问题。 谢谢
当前状态:
期望状态:
【问题讨论】:
-
您能否附上您认为快照的外观和实际外观的图片?
-
缓冲图像文档中提到的方法
setData-“将图像的矩形区域设置为指定光栅 r 的内容,假定与 BufferedImage 位于相同的坐标空间中。”尺寸可能不同吗? SwingFXUtils.fromFXImage 返回一个缓冲图像,因此跳过它后面的 2 行并直接写入输出该图像,看看它如何改变输出。 docs.oracle.com/javase/1.4.2/docs/api/java/awt/image/…
标签: image javafx-2 screenshot