.. | .. |
---|
24 | 24 | import java.net.Authenticator; |
---|
25 | 25 | import java.net.PasswordAuthentication; |
---|
26 | 26 | |
---|
| 27 | +import java.util.Iterator; |
---|
| 28 | +import java.util.Locale; |
---|
| 29 | + |
---|
| 30 | +import javax.imageio.IIOImage; |
---|
| 31 | +import javax.imageio.ImageIO; |
---|
| 32 | +import javax.imageio.ImageWriteParam; |
---|
| 33 | +import javax.imageio.ImageWriter; |
---|
| 34 | +import javax.imageio.plugins.jpeg.JPEGImageWriteParam; |
---|
| 35 | +import javax.imageio.stream.ImageOutputStream; |
---|
| 36 | +import javax.imageio.ImageWriteParam; |
---|
| 37 | + |
---|
| 38 | +import java.awt.image.*; |
---|
| 39 | + |
---|
27 | 40 | //import com.jamonapi.*; |
---|
28 | 41 | public class Grafreed extends Applet implements ActionListener |
---|
29 | 42 | { |
---|
.. | .. |
---|
65 | 78 | java.awt.Toolkit.getDefaultToolkit().beep(); |
---|
66 | 79 | } |
---|
67 | 80 | |
---|
| 81 | + static String SaveImage(String filename, BufferedImage bufImage, float compressionQuality) |
---|
| 82 | + { |
---|
| 83 | + String ext = "jpg"; // filename.substring(filename.length()-3, filename.length()) |
---|
| 84 | + |
---|
| 85 | + if (compressionQuality == 1) |
---|
| 86 | + { |
---|
| 87 | + ext = "png"; |
---|
| 88 | + } |
---|
| 89 | + |
---|
| 90 | + BufferedImage rendImage; // = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_INT_RGB); |
---|
| 91 | + |
---|
| 92 | + try |
---|
| 93 | + { |
---|
| 94 | + int[] storage = ((sun.awt.image.IntegerInterleavedRaster)bufImage.getRaster()).getDataStorage(); |
---|
| 95 | + |
---|
| 96 | + rendImage = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_INT_RGB); |
---|
| 97 | + int[] storage2 = ((sun.awt.image.IntegerInterleavedRaster)rendImage.getRaster()).getDataStorage(); |
---|
| 98 | + |
---|
| 99 | + for (int i=storage.length; --i>=0;) |
---|
| 100 | + { |
---|
| 101 | + storage2[i] = storage[i]; |
---|
| 102 | + } |
---|
| 103 | + } |
---|
| 104 | + catch (Exception e) |
---|
| 105 | + { |
---|
| 106 | + byte[] storage = ((sun.awt.image.ByteInterleavedRaster)bufImage.getRaster()).getDataStorage(); |
---|
| 107 | + |
---|
| 108 | + rendImage = new BufferedImage(bufImage.getWidth(), bufImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY); |
---|
| 109 | + byte[] storage2 = ((sun.awt.image.ByteInterleavedRaster)rendImage.getRaster()).getDataStorage(); |
---|
| 110 | + |
---|
| 111 | + for (int i=storage.length/2; --i>=0;) |
---|
| 112 | + { |
---|
| 113 | + storage2[i] = storage[2*i]; |
---|
| 114 | + } |
---|
| 115 | + } |
---|
| 116 | + |
---|
| 117 | +// rendImage.setRGB(0,0,bufImage.getWidth(),bufImage.getHeight(), |
---|
| 118 | +// bufImage.getRGB(0, 0, bufImage.getWidth(), bufImage.getHeight(), null, 0, bufImage.getWidth()), |
---|
| 119 | +// 0,bufImage.getWidth()); |
---|
| 120 | +// //bufImage.getWidth()*(bufImage.getHeight()-1),-bufImage.getWidth()); |
---|
| 121 | + |
---|
| 122 | + ImageWriter writer = null; |
---|
| 123 | + Iterator iter = ImageIO.getImageWritersByFormatName(ext); |
---|
| 124 | + |
---|
| 125 | + if (iter.hasNext()) { |
---|
| 126 | + writer = (ImageWriter)iter.next(); |
---|
| 127 | + } |
---|
| 128 | + |
---|
| 129 | +// int i = frames.size(); |
---|
| 130 | +// |
---|
| 131 | +// filename = filename + (i%100000)/10000 + "" + (i%10000)/1000 + "" + (i%1000)/100 + "" + (i%100)/10 + "" + (i%10) + ".jpg"; |
---|
| 132 | + |
---|
| 133 | + { |
---|
| 134 | + String fn = filename; |
---|
| 135 | + if (!fn.endsWith(".jpg")) |
---|
| 136 | + { |
---|
| 137 | + fn += ".jpg"; |
---|
| 138 | + } |
---|
| 139 | + |
---|
| 140 | + java.io.File outfile = new java.io.File(fn); |
---|
| 141 | + |
---|
| 142 | + if (outfile.getParentFile() != null) // nov 2013 |
---|
| 143 | + outfile.getParentFile().mkdirs(); |
---|
| 144 | + |
---|
| 145 | + filename = outfile.getAbsolutePath(); |
---|
| 146 | + |
---|
| 147 | + //float compressionQuality = 0.85f; |
---|
| 148 | + |
---|
| 149 | + try |
---|
| 150 | + { |
---|
| 151 | + ImageOutputStream ios = ImageIO.createImageOutputStream(outfile); |
---|
| 152 | + writer.setOutput(ios); |
---|
| 153 | + JPEGImageWriteParam iwparam=new JPEGImageWriteParam(Locale.getDefault()); |
---|
| 154 | + iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; |
---|
| 155 | + iwparam.setCompressionQuality(compressionQuality); |
---|
| 156 | + writer.write(null, new IIOImage(rendImage, null, null), iwparam); |
---|
| 157 | + ios.flush(); |
---|
| 158 | + writer.dispose(); |
---|
| 159 | + ios.close(); |
---|
| 160 | + } |
---|
| 161 | + catch(Exception e){}; |
---|
| 162 | + } |
---|
| 163 | + |
---|
| 164 | + return ".jpg"; |
---|
| 165 | +// return;// filename; |
---|
| 166 | + } |
---|
| 167 | + |
---|
68 | 168 | public static String RemovePrefix(String s, String prefix) |
---|
69 | 169 | { |
---|
70 | 170 | if (s != null && prefix != null && s.startsWith(prefix)) |
---|