Normand Briere
2019-10-06 9cf2c36d644d0aaa28797f57a3e71591d8e66973
Grafreed.java
....@@ -24,6 +24,19 @@
2424 import java.net.Authenticator;
2525 import java.net.PasswordAuthentication;
2626
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
+
2740 //import com.jamonapi.*;
2841 public class Grafreed extends Applet implements ActionListener
2942 {
....@@ -65,6 +78,93 @@
6578 java.awt.Toolkit.getDefaultToolkit().beep();
6679 }
6780
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
+
68168 public static String RemovePrefix(String s, String prefix)
69169 {
70170 if (s != null && prefix != null && s.startsWith(prefix))