From c43eafc319ee0c1c9d3f61dd5224acb7bfda0ff6 Mon Sep 17 00:00:00 2001 From: Ali-RS Date: Fri, 22 Mar 2019 10:21:43 +0430 Subject: [PATCH] Modified JmeDesktopSystem.writeImageFile() to export transparency for PNG format. --- .../java/com/jme3/system/JmeDesktopSystem.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java b/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java index d02b5d21c..1ba8cb966 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java +++ b/jme3-desktop/src/main/java/com/jme3/system/JmeDesktopSystem.java @@ -90,20 +90,22 @@ public class JmeDesktopSystem extends JmeSystemDelegate { @Override public void writeImageFile(OutputStream outStream, String format, ByteBuffer imageData, int width, int height) throws IOException { - BufferedImage awtImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); - Screenshots.convertScreenShot2(imageData.asIntBuffer(), awtImage); - ImageWriter writer = ImageIO.getImageWritersByFormatName(format).next(); ImageWriteParam writeParam = writer.getDefaultWriteParam(); - + + BufferedImage awtImage; if (format.equals("jpg")) { JPEGImageWriteParam jpegParam = (JPEGImageWriteParam) writeParam; jpegParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); jpegParam.setCompressionQuality(0.95f); + awtImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); + Screenshots.convertScreenShot2(imageData.asIntBuffer(), awtImage); + awtImage = verticalFlip(awtImage); + } else { + awtImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); + Screenshots.convertScreenShot(imageData, awtImage); } - awtImage = verticalFlip(awtImage); - ImageOutputStream imgOut = new MemoryCacheImageOutputStream(outStream); writer.setOutput(imgOut); IIOImage outputImage = new IIOImage(awtImage, null, null);