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. --- Grafreed.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 100 insertions(+), 0 deletions(-) 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)) -- Gitblit v1.6.2