I'm trying to capture a screenshot of the current scene and save it as either a png/jpg and pdf. Both options are successful when it comes to saving the screenshot however, the image doesn't come out right. As the image shows, the screenshot is completely awful and I can't seem to make it work. The image is also cute off when saved for some reason.
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));
}
Really need help with this problem. Thank you
Current State:
Desired State:
It worked fine when I converted the Image to PNG using ImageIO
Below is the code of my implementation
Jpeg images are lossy and can have variable levels of compression so it is likely that you need to adjust the compression. (PNG images are lossless, so if you change the filetype to PNG and the image is saved at the desired quality this will confirm my suspicions).
To adjust the compression level of the Jpeg encoder you should be able to follow this guide; http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg-image-compression-quality-when-saving-images-in-java
From the guide I expect all you need do is call this code;
In the place of;