I want to save an Image from my ImageView to files with different resolutions. Doing it as .png results as expected. As for .jpg - I get all files pink toned.
Update
This issue was fixed for Java 8:
JDK-8114609 Incorrect display of JPEG images
It looks like you are encountering existing bugs in the ImageIO or JavaFX Image processing libraries.
You might wish to try some of the workarounds suggested in the StackOverflow questions below and see if any of them fix the issue for you:
I found a solution on Oracle forums. As widely discussed, the problem is in alpha-channel that needs to be excluded from the source image, targeted for .jpg
save. I also rearranged my code to make it shorter. The workaround is:
// Get buffered image:
BufferedImage image = SwingFXUtils.fromFXImage(myJavaFXImage, null);
// Remove alpha-channel from buffered image:
BufferedImage imageRGB = new BufferedImage(
image.getWidth(),
image.getHeight(),
BufferedImage.OPAQUE);
Graphics2D graphics = imageRGB.createGraphics();
graphics.drawImage(image, 0, 0, null);
ImageIO.write(imageRGB, "jpg", new File("/mydir/foto.jpg"));
graphics.dispose();
Fixed in Java 8: https://bugs.openjdk.java.net/browse/JDK-8114609