From 9cf2c36d644d0aaa28797f57a3e71591d8e66973 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 06 Oct 2019 10:56:18 -0400 Subject: [PATCH] Save image helper. --- CameraPane.java | 9 ++++ Object3D.java | 2 Grafreed.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) diff --git a/CameraPane.java b/CameraPane.java index c7a4b69..7434ed9 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -9994,7 +9994,7 @@ ext = "png"; Iterator iter = ImageIO.getImageWritersByFormatName(ext); if (iter.hasNext()) { - writer = (ImageWriter)iter.next(); + writer = (ImageWriter)iter.next(); } // patch for NULLE PART @@ -18048,6 +18048,13 @@ int[] pixels = selectsizebuffer.array(); +// BufferedImage rendImage = new BufferedImage(OCCLUSION_SIZE, OCCLUSION_SIZE, BufferedImage.TYPE_INT_RGB); +// rendImage.setRGB(0,0, OCCLUSION_SIZE,OCCLUSION_SIZE, pixels, OCCLUSION_SIZE*(OCCLUSION_SIZE-1),-OCCLUSION_SIZE); +// +// Grafreed.SaveImage("testocclusion.jpg", rendImage, 0.5f); +// +// System.exit(0); + double r = 0, g = 0, b = 0; double count = 0; diff --git a/Grafreed.java b/Grafreed.java index 155cae5..320521a 100644 --- a/Grafreed.java +++ b/Grafreed.java @@ -24,6 +24,19 @@ import java.net.Authenticator; import java.net.PasswordAuthentication; +import java.util.Iterator; +import java.util.Locale; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.plugins.jpeg.JPEGImageWriteParam; +import javax.imageio.stream.ImageOutputStream; +import javax.imageio.ImageWriteParam; + +import java.awt.image.*; + //import com.jamonapi.*; public class Grafreed extends Applet implements ActionListener { @@ -65,6 +78,93 @@ java.awt.Toolkit.getDefaultToolkit().beep(); } + static String SaveImage(String filename, BufferedImage bufImage, float compressionQuality) + { + String ext = "jpg"; // filename.substring(filename.length()-3, filename.length()) + + if (compressionQuality == 1) + { + ext = "png"; + } + + BufferedImage rendImage; // = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_INT_RGB); + + try + { + int[] storage = ((sun.awt.image.IntegerInterleavedRaster)bufImage.getRaster()).getDataStorage(); + + rendImage = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_INT_RGB); + int[] storage2 = ((sun.awt.image.IntegerInterleavedRaster)rendImage.getRaster()).getDataStorage(); + + for (int i=storage.length; --i>=0;) + { + storage2[i] = storage[i]; + } + } + catch (Exception e) + { + byte[] storage = ((sun.awt.image.ByteInterleavedRaster)bufImage.getRaster()).getDataStorage(); + + rendImage = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY); + byte[] storage2 = ((sun.awt.image.ByteInterleavedRaster)rendImage.getRaster()).getDataStorage(); + + for (int i=storage.length/2; --i>=0;) + { + storage2[i] = storage[2*i]; + } + } + +// rendImage.setRGB(0,0,bufImage.getWidth(),bufImage.getHeight(), +// bufImage.getRGB(0, 0, bufImage.getWidth(), bufImage.getHeight(), null, 0, bufImage.getWidth()), +// 0,bufImage.getWidth()); +// //bufImage.getWidth()*(bufImage.getHeight()-1),-bufImage.getWidth()); + + ImageWriter writer = null; + Iterator iter = ImageIO.getImageWritersByFormatName(ext); + + if (iter.hasNext()) { + writer = (ImageWriter)iter.next(); + } + +// int i = frames.size(); +// +// filename = filename + (i%100000)/10000 + "" + (i%10000)/1000 + "" + (i%1000)/100 + "" + (i%100)/10 + "" + (i%10) + ".jpg"; + + { + String fn = filename; + if (!fn.endsWith(".jpg")) + { + fn += ".jpg"; + } + + java.io.File outfile = new java.io.File(fn); + + if (outfile.getParentFile() != null) // nov 2013 + outfile.getParentFile().mkdirs(); + + filename = outfile.getAbsolutePath(); + + //float compressionQuality = 0.85f; + + try + { + ImageOutputStream ios = ImageIO.createImageOutputStream(outfile); + writer.setOutput(ios); + JPEGImageWriteParam iwparam=new JPEGImageWriteParam(Locale.getDefault()); + iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; + iwparam.setCompressionQuality(compressionQuality); + writer.write(null, new IIOImage(rendImage, null, null), iwparam); + ios.flush(); + writer.dispose(); + ios.close(); + } + catch(Exception e){}; + } + + return ".jpg"; +// return;// filename; + } + public static String RemovePrefix(String s, String prefix) { if (s != null && prefix != null && s.startsWith(prefix)) diff --git a/Object3D.java b/Object3D.java index 56c17c2..0843864 100644 --- a/Object3D.java +++ b/Object3D.java @@ -6303,7 +6303,7 @@ if (!selectmode && //display.DrawMode() != display.SELECTION && //(touched || (bRep != null && bRep.displaylist <= 0))) - (Globals.isLIVE() || touched) && Globals.COMPUTESHADOWWHENLIVE) // || (bRep != null && bRep.displaylist <= 0))) + ((Globals.isLIVE() && Globals.COMPUTESHADOWWHENLIVE) || touched)) // || (bRep != null && bRep.displaylist <= 0))) { Globals.lighttouched = true; } // all panes... -- Gitblit v1.6.2