Normand Briere
2019-10-06 9cf2c36d644d0aaa28797f57a3e71591d8e66973
Save image helper.
3 files modified
111 ■■■■■ changed files
CameraPane.java 9 ●●●● patch | view | raw | blame | history
Grafreed.java 100 ●●●●● patch | view | raw | blame | history
Object3D.java 2 ●●● patch | view | raw | blame | history
CameraPane.java
....@@ -9994,7 +9994,7 @@
99949994 ext = "png";
99959995 Iterator iter = ImageIO.getImageWritersByFormatName(ext);
99969996 if (iter.hasNext()) {
9997
- writer = (ImageWriter)iter.next();
9997
+ writer = (ImageWriter)iter.next();
99989998 }
99999999
1000010000 // patch for NULLE PART
....@@ -18048,6 +18048,13 @@
1804818048
1804918049 int[] pixels = selectsizebuffer.array();
1805018050
18051
+// BufferedImage rendImage = new BufferedImage(OCCLUSION_SIZE, OCCLUSION_SIZE, BufferedImage.TYPE_INT_RGB);
18052
+// rendImage.setRGB(0,0, OCCLUSION_SIZE,OCCLUSION_SIZE, pixels, OCCLUSION_SIZE*(OCCLUSION_SIZE-1),-OCCLUSION_SIZE);
18053
+//
18054
+// Grafreed.SaveImage("testocclusion.jpg", rendImage, 0.5f);
18055
+//
18056
+// System.exit(0);
18057
+
1805118058 double r = 0, g = 0, b = 0;
1805218059
1805318060 double count = 0;
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))
Object3D.java
....@@ -6303,7 +6303,7 @@
63036303
63046304 if (!selectmode && //display.DrawMode() != display.SELECTION &&
63056305 //(touched || (bRep != null && bRep.displaylist <= 0)))
6306
- (Globals.isLIVE() || touched) && Globals.COMPUTESHADOWWHENLIVE) // || (bRep != null && bRep.displaylist <= 0)))
6306
+ ((Globals.isLIVE() && Globals.COMPUTESHADOWWHENLIVE) || touched)) // || (bRep != null && bRep.displaylist <= 0)))
63076307 {
63086308 Globals.lighttouched = true;
63096309 } // all panes...