Revision: 4193
Author: solomax666
Date: Sun Sep 4 11:34:15 2011
Log: - svn revision is added to openmeetings.jar
- sun proprietary JPEGCodec is replaced with javax.imageio
http://code.google.com/p/openmeetings/source/detail?r=4193
Added:
/trunk/singlewebapp/lib/svntask-1.0.8
/trunk/singlewebapp/lib/svntask-1.0.8/svnkit.jar
/trunk/singlewebapp/lib/svntask-1.0.8/svntask.jar
Modified:
/trunk/singlewebapp/build.xml
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java
/trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java
=======================================
--- /dev/null
+++ /trunk/singlewebapp/lib/svntask-1.0.8/svnkit.jar Sun Sep 4 11:34:15
2011
File is too large to display a diff.
=======================================
--- /dev/null
+++ /trunk/singlewebapp/lib/svntask-1.0.8/svntask.jar Sun Sep 4 11:34:15
2011
Binary file, no diff available.
=======================================
--- /trunk/singlewebapp/build.xml Sun Sep 4 02:15:43 2011
+++ /trunk/singlewebapp/build.xml Sun Sep 4 11:34:15 2011
@@ -89,6 +89,8 @@
<property name="java2swf.lib" value="${project.lib}/java2swf" />
<!-- Junit -->
<property name="junit.lib" value="${project.lib}/junit" />
+ <!-- Svn Task -->
+ <property name="svntask.lib" value="${project.lib}/svntask-1.0.8"/>
<!-- screenshare.lib -->
<property name="screenshare.lib"
value="${basedir}/WebContent/red5-screenshare" />
@@ -278,7 +280,7 @@
</target>
<!-- Compile JAR -->
- <target name="jar" description="Make Archive" depends="enhance">
+ <target name="jar" description="Make Archive" depends="enhance,
current_revision">
<tstamp prefix="build">
<format property="TODAY" pattern="d-MMMM-yyyy"
locale="en"/>
</tstamp>
@@ -303,6 +305,7 @@
<attribute name="Built-By" value="OpenMeetings -
http://openmeetings.googlecode.com"/>
<attribute name="Built-On"
value="${build.TODAY}"/>
<attribute name="Class-Path" value="conf/
${jar.classpath}"/>
+ <attribute name="Svn-Revision"
value="${svn.version}" />
</manifest>
</jar>
<jar
destfile="${dist.dir}/red5/webapps/${project.distname}/screen/screenviewer.jar">
@@ -543,6 +546,19 @@
<echo message="Enhancing complete."/>
</target>
+ <target name="current_revision">
+ <typedef resource="com/googlecode/svntask/svntask.xml">
+ <classpath>
+ <fileset dir="${svntask.lib}" includes="*.jar"/>
+ </classpath>
+ </typedef>
+
+ <svn><info path="." revisionProperty="svn.version" /></svn>
+
+ <!-- Display svn revision number -->
+ <echo>Current revision: ${svn.version}</echo>
+ </target>
+
<!-- Build entire project -->
<target name="build project" depends="clean, prepare, compile"/>
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
Sat Nov 21 06:34:35 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/screen/ClientCaptureScreen.java
Sun Sep 4 11:34:15 2011
@@ -1,31 +1,17 @@
package org.openmeetings.client.screen;
-import java.awt.*;
-import java.io.*;
+import java.awt.MouseInfo;
+import java.awt.Point;
+import java.awt.PointerInfo;
import java.util.Date;
import java.util.List;
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.URLConnection;
-import java.net.URL;
-import java.awt.image.BufferedImage;
-
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.media.Log;
-
import org.apache.log4j.Logger;
import org.openmeetings.client.beans.ClientConnectionBean;
import org.openmeetings.client.beans.ClientCursorStatus;
import org.openmeetings.client.beans.ClientFrameBean;
import org.openmeetings.client.beans.ClientImageFrame;
-import org.openmeetings.client.beans.ClientVirtualScreenBean;
-import org.openmeetings.client.gui.ClientStartScreen;
import org.openmeetings.client.transport.ClientTransportMinaPool;
-import org.openmeetings.client.util.ClientPacketizer;
import org.openmeetings.client.util.ClientRaster;
import org.openmeetings.client.util.ClientRasterList;
@@ -290,11 +276,21 @@
//
// log.debug("1 buffer start , end ,
delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
//
-// JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
-// JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(imageScreen);
-// encpar.setQuality(ClientConnectionBean.imgQuality,
false);
-// encoder.setJPEGEncodeParam(encpar);
-// encoder.encode(imageScreen);
+// // Find a jpeg writer
+// ImageWriter writer = null;
+// Iterator<ImageWriter> iter = ImageIO
+// .getImageWritersByFormatName("jpg");
+// if (iter.hasNext()) {
+// writer = iter.next();
+// }
+// writer.setOutput(out);
+// ImageWriteParam iwparam = new JPEGImageWriteParam(
+// Locale.getDefault());
+// iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+// iwparam.setCompressionQuality(imgQuality);
+//
+// writer.write(null, new IIOImage(imageScreen, null, null),
+// iwparam);
//
// imageScreen.flush();
//
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRaster.java
Sun Sep 4 11:34:15 2011
@@ -24,13 +24,6 @@
import org.openmeetings.client.beans.ClientImageFrame;
import org.openmeetings.client.beans.ClientVirtualScreenBean;
-//import com.sun.imageio.plugins.png.
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.imageio.plugins.gif.GIFImageWriter;
-
/**
* @author sebastianwagner
*
@@ -111,12 +104,21 @@
// ByteArrayOutputStream out = new
ByteArrayOutputStream();
//
-// JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
-// JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(image);
-//
-//
encpar.setQuality(ClientConnectionBean.imgQualityDefault, false);
-// encoder.setJPEGEncodeParam(encpar);
-// encoder.encode(image);
+// // Find a jpeg writer
+// ImageWriter writer = null;
+// Iterator<ImageWriter> iter = ImageIO
+//
.getImageWritersByFormatName("jpg");
+// if (iter.hasNext()) {
+// writer = iter.next();
+// }
+// writer.setOutput(out);
+// ImageWriteParam iwparam = new
JPEGImageWriteParam(
+// Locale.getDefault());
+//
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+//
iwparam.setCompressionQuality(imgQuality);
+//
+// writer.write(null, new IIOImage(image,
null, null),
+// iwparam);
ByteArrayOutputStream out = new
ByteArrayOutputStream();
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/client/util/ClientRasterByMode.java
Sun Sep 4 11:34:15 2011
@@ -7,8 +7,10 @@
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Locale;
import java.util.zip.GZIPOutputStream;
import org.apache.log4j.Logger;
@@ -16,129 +18,163 @@
import org.openmeetings.client.beans.ClientImageFrame;
import org.openmeetings.client.beans.ClientVirtualScreenBean;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
+import javax.imageio.*;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+import static
org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
/**
* @author sebastianwagner
*
*
*
- * This Raster does additionally check the Screen for updates
- * Plus based on the Mode does only send certain Tiles of the
- * Raster to have a higher grade of
+ * This Raster does additionally check the Screen for updates Plus
based
+ * on the Mode does only send certain Tiles of the Raster to have a
+ * higher grade of
*
- *
+ *
*/
public class ClientRasterByMode {
-
+
private static Logger log = Logger.getLogger(ClientRasterByMode.class);
-
+
private static final int tileWidth = 512;
private static final int tileHeight = 512;
-
+
public static synchronized List<ClientImageFrame> tileScreen(int mode) {
try {
-
+
int counter = mode;
-
+
List<ClientImageFrame> clientImageFrames = new
LinkedList<ClientImageFrame>();
-
- int tileNumberWidth =
Double.valueOf(Math.floor(ClientVirtualScreenBean.vScreenSpinnerWidth /
tileWidth)).intValue();
- int tileNumberHeight =
Double.valueOf(Math.floor(ClientVirtualScreenBean.vScreenSpinnerHeight /
tileHeight)).intValue();
-
+
+ int tileNumberWidth = Double.valueOf(
+
Math.floor(ClientVirtualScreenBean.vScreenSpinnerWidth
+ /
tileWidth)).intValue();
+ int tileNumberHeight = Double.valueOf(
+
Math.floor(ClientVirtualScreenBean.vScreenSpinnerHeight
+ /
tileHeight)).intValue();
+
int xOffset = ClientVirtualScreenBean.vScreenSpinnerX;
int yOffset = ClientVirtualScreenBean.vScreenSpinnerY;
-
-
log.debug("tileNumberWidth,tileNumberHeight "+tileNumberWidth+","+tileNumberHeight);
- log.debug("xOffset,yOffset "+xOffset+","+yOffset);
-
+
+ log.debug("tileNumberWidth,tileNumberHeight " +
tileNumberWidth
+ + "," + tileNumberHeight);
+ log.debug("xOffset,yOffset " + xOffset + "," + yOffset);
+
Robot robot = ClientVirtualScreenBean.robot;
- if (robot==null) robot = new Robot();
- Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
-
- for (int x=0;x<=tileNumberWidth;x++) {
-
- for (int y=0;y<=tileNumberHeight;y++) {
-
- //We send only every 4th item
+ if (robot == null)
+ robot = new Robot();
+ Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit()
+ .getScreenSize();
+
+ for (int x = 0; x <= tileNumberWidth; x++) {
+
+ for (int y = 0; y <= tileNumberHeight; y++) {
+
+ // We send only every 4th item
int modulo = counter % 4;
-
+
if (modulo == 0) {
-
- int rect_x = xOffset + ( x *
tileWidth );
- int rect_y = yOffset + ( y *
tileHeight );
-
-
log.debug("rect_x,rect_y,tileWidth,tileHeight "+rect_x+","+rect_y+","+tileWidth+","+tileHeight);
-
+
+ int rect_x = xOffset + (x *
tileWidth);
+ int rect_y = yOffset + (y *
tileHeight);
+
+
log.debug("rect_x,rect_y,tileWidth,tileHeight "
+ + rect_x + "," + rect_y +
"," + tileWidth + ","
+ + tileHeight);
+
int rectWidth = tileWidth;
int rectHeight = tileHeight;
-
+
if (rect_x + rectWidth >
screenSize.width) {
rectWidth =
screenSize.width - rect_x;
}
if (rect_y + rectHeight >
screenSize.height) {
rectHeight =
screenSize.height - rect_y;
}
-
- Rectangle screenRectangle = new
Rectangle(rect_x,rect_y,rectWidth,rectHeight);
-
- Rectangle shrinkedRectAngle = new Rectangle(Math.round(rect_x *
ClientConnectionBean.imgQuality) , Math.round(rect_y *
ClientConnectionBean.imgQuality),
- Math.round(rectWidth * ClientConnectionBean.imgQuality),
Math.round(rectHeight * ClientConnectionBean.imgQuality));
-
- BufferedImage imageScreen =
robot.createScreenCapture(screenRectangle);
-
- Image img = imageScreen.getScaledInstance(Double.valueOf(tileWidth *
ClientConnectionBean.imgQuality).intValue(), Double.valueOf(tileHeight *
ClientConnectionBean.imgQuality).intValue() ,Image.SCALE_SMOOTH);
- BufferedImage image = new BufferedImage(Double.valueOf(tileWidth *
ClientConnectionBean.imgQuality).intValue(), Double.valueOf(tileHeight *
ClientConnectionBean.imgQuality).intValue(),BufferedImage.TYPE_INT_RGB);
+
+ Rectangle screenRectangle = new
Rectangle(rect_x,
+ rect_y,
rectWidth, rectHeight);
+
+ Rectangle shrinkedRectAngle =
new Rectangle(
+
Math.round(rect_x * imgQuality),
+
Math.round(rect_y * imgQuality),
+
Math.round(rectWidth * imgQuality),
+
Math.round(rectHeight * imgQuality));
+
+ BufferedImage imageScreen =
robot
+
.createScreenCapture(screenRectangle);
+
+ Image img =
imageScreen.getScaledInstance(Double
+
.valueOf(tileWidth * imgQuality).intValue(),
+
Double.valueOf(tileHeight * imgQuality)
+
.intValue(), Image.SCALE_SMOOTH);
+ BufferedImage image = new
BufferedImage(Double.valueOf(
+ tileWidth *
imgQuality).intValue(), Double
+
.valueOf(tileHeight * imgQuality).intValue(),
+
BufferedImage.TYPE_INT_RGB);
Graphics2D biContext =
image.createGraphics();
biContext.drawImage(img, 0, 0,
null);
-
+
ByteArrayOutputStream out = new
ByteArrayOutputStream();
-
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(image);
-
encpar.setQuality(ClientConnectionBean.imgQuality, false);
-
encoder.setJPEGEncodeParam(encpar);
- encoder.encode(image);
-
+
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter =
ImageIO
+
.getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new
JPEGImageWriteParam(
+
Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+
iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new
IIOImage(image, null, null),
+ iwparam);
+
imageScreen.flush();
-
+
byte[] payload =
out.toByteArray();
-
- //GZip
+
+ // GZip
ByteArrayOutputStream
byteGzipOut = new ByteArrayOutputStream();
- GZIPOutputStream gZipOut = new
GZIPOutputStream(byteGzipOut);
-
- gZipOut.write(payload);
- gZipOut.close();
-
- log.debug("byteGzipOut LENGTH
"+byteGzipOut.toByteArray().length);
- log.debug("payload LENGTH
"+payload.length);
-
- log.debug("TILE x,y
"+shrinkedRectAngle.x+" "+shrinkedRectAngle.y);
-
- clientImageFrames.add(new
ClientImageFrame(shrinkedRectAngle,byteGzipOut.toByteArray()));
-
+ GZIPOutputStream gZipOut = new
GZIPOutputStream(
+ byteGzipOut);
+
+ gZipOut.write(payload);
+ gZipOut.close();
+
+ log.debug("byteGzipOut LENGTH "
+ +
byteGzipOut.toByteArray().length);
+ log.debug("payload LENGTH " +
payload.length);
+
+ log.debug("TILE x,y " +
shrinkedRectAngle.x + " "
+ +
shrinkedRectAngle.y);
+
+ clientImageFrames.add(new
ClientImageFrame(
+
shrinkedRectAngle, byteGzipOut.toByteArray()));
+
image.flush();
- img.flush();
+ img.flush();
byteGzipOut.flush();
gZipOut.flush();
-
- }
-
+
+ }
+
counter++;
-
- }
-
- }
-
+
+ }
+
+ }
+
return clientImageFrames;
-
+
} catch (Exception err) {
- log.error("[checkFrame]",err);
+ log.error("[checkFrame]", err);
}
return null;
}
-
-}
+
+}
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByDelta.java
Sun Sep 4 11:34:15 2011
@@ -1,24 +1,13 @@
package org.openmeetings.screen.codec;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
import java.util.LinkedList;
import java.util.List;
-import java.util.zip.GZIPOutputStream;
import org.apache.log4j.Logger;
-import org.openmeetings.client.beans.ClientConnectionBean;
-import org.openmeetings.client.beans.ClientFrameBean;
-import org.openmeetings.client.transport.ClientTransportMinaPool;
import org.openmeetings.screen.codec.beans.ClientFrameBuffer;
import org.openmeetings.screen.codec.beans.ClientImageFrameModus;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
public class CaptureScreenByDelta {
private static Logger log =
Logger.getLogger(CaptureScreenByDelta.class);
@@ -211,12 +200,21 @@
// try {
// ByteArrayOutputStream out = new ByteArrayOutputStream();
//
-// JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
-// JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(clientImageFrameModus.getImage());
-//
-// encpar.setQuality(quality, false);
-// encoder.setJPEGEncodeParam(encpar);
-// encoder.encode(clientImageFrameModus.getImage());
+// // Find a jpeg writer
+// ImageWriter writer = null;
+// Iterator<ImageWriter> iter = ImageIO
+// .getImageWritersByFormatName("jpg");
+// if (iter.hasNext()) {
+// writer = iter.next();
+// }
+// writer.setOutput(out);
+// ImageWriteParam iwparam = new JPEGImageWriteParam(
+// Locale.getDefault());
+// iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+// iwparam.setCompressionQuality(imgQuality);
+//
+// writer.write(null, new IIOImage(clientImageFrameModus.getImage(), null,
null),
+// iwparam);
//
// byte[] payload = out.toByteArray();
//
=======================================
---
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/client/org/openmeetings/screen/codec/CaptureScreenByMode.java
Sun Sep 4 11:34:15 2011
@@ -1,22 +1,11 @@
package org.openmeetings.screen.codec;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
import java.util.zip.GZIPOutputStream;
-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 org.apache.log4j.Logger;
import org.openmeetings.client.beans.ClientConnectionBean;
import org.openmeetings.client.beans.ClientFrameBean;
@@ -24,10 +13,6 @@
import org.openmeetings.screen.codec.beans.ClientFrameBuffer;
import org.openmeetings.screen.codec.beans.ClientImageFrameModus;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
public class CaptureScreenByMode {
private static Logger log = Logger.getLogger(CaptureScreenByMode.class);
=======================================
---
/trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
Mon Oct 12 02:56:03 2009
+++
/trunk/singlewebapp/src/screenviewer/org/openmeetings/webstart/screen/CaptureScreen.java
Sun Sep 4 11:34:15 2011
@@ -1,36 +1,53 @@
package org.openmeetings.webstart.screen;
-import java.awt.*;
-import java.io.*;
-import java.util.Date;
-
-import java.net.URLConnection;
-import java.net.URL;
+import static org.openmeetings.webstart.beans.ConnectionBean.imgQuality;
+
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Robot;
import java.awt.image.BufferedImage;
-
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-import com.sun.image.codec.jpeg.JPEGCodec;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Date;
+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 org.openmeetings.webstart.beans.ConnectionBean;
import org.openmeetings.webstart.beans.VirtualScreenBean;
import org.openmeetings.webstart.gui.StartScreen;
public class CaptureScreen {
-
+
private Date startDate;
public static void main(String[] args) {
- new
CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet","2010","1","public","","");
+ new
CaptureScreen("http://192.168.2.103:5080/xmlcrm/ScreenServlet",
+ "2010", "1", "public", "", "");
}
- public CaptureScreen(String url, String SID, String room, String domain,
String publicSID, String record) {
+ public CaptureScreen(String url, String SID, String room, String domain,
+ String publicSID, String record) {
try {
System.err.println("captureScreenStart");
this.startDate = new Date();
- //StartScreen.instance.showBandwidthWarning("capture
publicSID: "+publicSID);
+ // StartScreen.instance.showBandwidthWarning("capture
publicSID: "+publicSID);
ConnectionBean.isloading = true;
-
this.captureScreen(url+"?sid="+SID+"&room="+room+"&domain="+domain+"&publicSID="+publicSID+"&record="+record,"myscreenRemote.jpg");
+ this.captureScreen(url + "?sid=" + SID + "&room=" + room
+ + "&domain=" + domain + "&publicSID=" +
publicSID
+ + "&record=" + record,
"myscreenRemote.jpg");
} catch (Exception io) {
System.err.println(io);
System.out.println(io);
@@ -39,7 +56,7 @@
}
public void captureScreen(String url, String fileName) throws Exception
{
-
+
this.sendJpegToUrl(this.bufferImage(), url, fileName);
}
@@ -48,64 +65,84 @@
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
-
+
Rectangle screenRectangle = new Rectangle(
-
VirtualScreenBean.vScreenSpinnerX,VirtualScreenBean.vScreenSpinnerY,
-
VirtualScreenBean.vScreenSpinnerWidth,VirtualScreenBean.vScreenSpinnerHeight);
+ VirtualScreenBean.vScreenSpinnerX,
+ VirtualScreenBean.vScreenSpinnerY,
+ VirtualScreenBean.vScreenSpinnerWidth,
+ VirtualScreenBean.vScreenSpinnerHeight);
Robot robot = VirtualScreenBean.robot;
- if (robot==null) robot = new Robot();
- //StartScreen.instance.showBandwidthWarning("capture "+(new
java.util.Date())+" and "+screenRectangle);
-
- BufferedImage imageScreen =
robot.createScreenCapture(screenRectangle);
-
- //Scale the image ro reduce size
-
+ if (robot == null)
+ robot = new Robot();
+ // StartScreen.instance.showBandwidthWarning("capture
"+(new
+ // java.util.Date())+" and "+screenRectangle);
+
+ BufferedImage imageScreen = robot
+ .createScreenCapture(screenRectangle);
+
+ // Scale the image ro reduce size
+
double width = imageScreen.getWidth();
double height = imageScreen.getHeight();
-
+
Date endTime = new Date();
- long timeInSeconds =
(endTime.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("1 buffer start , end ,
delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
-
+ long timeInSeconds = (endTime.getTime() - this.startDate.getTime()) /
1000;
+
+ System.out.println("1 buffer start , end , delta " +
this.startDate
+ + " " + endTime + " :timeInSeconds: " +
timeInSeconds);
double thumbWidth = 600;
double thumbHeight = 600;
BufferedImage image = null;
Image img = null;
- double div = width / thumbWidth;
-
- System.out.println(" height:"+height+" width:
"+width);
- height = height / div;
- System.out.println("div: "+div+"
newheight:"+height);
-
- if (height>thumbHeight){
- double divHeight = height / thumbHeight;
- thumbWidth = thumbWidth/divHeight;
- height = thumbHeight;
- }
-
- System.out.println("final height:"+height+" width:
"+thumbWidth);
-
- img =
imageScreen.getScaledInstance(Double.valueOf(thumbWidth).intValue(),
Double.valueOf(height).intValue() ,Image.SCALE_SMOOTH);
- image = new BufferedImage(Double.valueOf(thumbWidth).intValue(),
Double.valueOf(height).intValue(),BufferedImage.TYPE_INT_RGB);
- Graphics2D biContext = image.createGraphics();
- biContext.drawImage(img, 0, 0, null);
-
-
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(image);
- encpar.setQuality(ConnectionBean.imgQuality, false);
- encoder.setJPEGEncodeParam(encpar);
- encoder.encode(image);
-
+ double div = width / thumbWidth;
+
+ System.out.println(" height:" + height + " width: " +
width);
+ height = height / div;
+ System.out.println("div: " + div + " newheight:" +
height);
+
+ if (height > thumbHeight) {
+ double divHeight = height / thumbHeight;
+ thumbWidth = thumbWidth / divHeight;
+ height = thumbHeight;
+ }
+
+ System.out.println("final height:" + height + " width: "
+ + thumbWidth);
+
+ img =
imageScreen.getScaledInstance(Double.valueOf(thumbWidth)
+ .intValue(),
Double.valueOf(height).intValue(),
+ Image.SCALE_SMOOTH);
+ image = new
BufferedImage(Double.valueOf(thumbWidth).intValue(),
+ Double.valueOf(height).intValue(),
+ BufferedImage.TYPE_INT_RGB);
+ Graphics2D biContext = image.createGraphics();
+ biContext.drawImage(img, 0, 0, null);
+
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter = ImageIO
+ .getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new JPEGImageWriteParam(
+ Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new IIOImage(image, null, null),
iwparam);
+
imageScreen.flush();
image.flush();
- if (img!=null)img.flush();
-
- //StartScreen.instance.showBandwidthWarning("capture Date and
Size: "+(new java.util.Date())+" and "+out.size());
-
+ if (img != null)
+ img.flush();
+
+ // StartScreen.instance.showBandwidthWarning("capture Date and
Size: "+(new
+ // java.util.Date())+" and "+out.size());
+
return out.toByteArray();
} catch (FileNotFoundException e) {
@@ -120,17 +157,17 @@
}
return null;
}
-
+
public void sendJpegToUrl(byte[] imageAsBytes, String url, String
fileName) {
try {
-
- System.out.println("sendJpegToUrl url "+url);
+
+ System.out.println("sendJpegToUrl url " + url);
Date endTime = new Date();
- long timeInSeconds =
(endTime.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("2 scaled , end ,
delta "+this.startDate+" "+endTime+" :timeInSeconds: "+timeInSeconds);
-
-
+ long timeInSeconds = (endTime.getTime() - this.startDate.getTime()) /
1000;
+
+ System.out.println("2 scaled , end , delta " +
this.startDate
+ + " " + endTime + " :timeInSeconds: " +
timeInSeconds);
+
URL u = new URL(url);
URLConnection c = u.openConnection();
@@ -140,30 +177,34 @@
c.setUseCaches(false);
// set request headers
- c.setRequestProperty("Content-Type","multipart/form-data;
boundary=AXi93A");
+ c.setRequestProperty("Content-Type",
+ "multipart/form-data; boundary=AXi93A");
// open a stream which can write to the url
DataOutputStream dstream = new
DataOutputStream(c.getOutputStream());
- // write content to the server, begin with the tag that says a content
element is comming
+ // write content to the server, begin with the tag that
says a
+ // content element is comming
dstream.writeBytes("--AXi93A\r\n");
// discribe the content
- dstream.writeBytes("Content-Disposition: form-data; name=\"Filedata\";
filename=\""+fileName+"\" \r\nContent-Type:
image/jpeg\r\nContent-Transfer-Encoding: binary\r\n");
+ dstream.writeBytes("Content-Disposition: form-data; name=\"Filedata\";
filename=\""
+ + fileName
+ + "\" \r\nContent-Type: image/jpeg\r\nContent-Transfer-Encoding:
binary\r\n");
dstream.write(imageAsBytes, 0, imageAsBytes.length);
// close the multipart form request
dstream.writeBytes("\r\n--AXi93A--\r\n\r\n");
dstream.flush();
dstream.close();
-
+
System.out.println("sendJpegToUrl complete ");
-
+
StartScreen.instance.showBandwidthWarning("send complete
");
-
- // read the output from the URL
- DataInputStream in = new DataInputStream(
- new
BufferedInputStream(c.getInputStream()));
+
+ // read the output from the URL
+ BufferedReader in = new BufferedReader(new
InputStreamReader(
+ c.getInputStream()));
String sIn = in.readLine();
while (sIn != null) {
if (sIn != null) {
@@ -171,18 +212,21 @@
}
sIn += in.readLine();
}
-
- StartScreen.instance.showBandwidthWarning("Input Stream:
"+sIn);
+
+ StartScreen.instance.showBandwidthWarning("Input Stream:
" + sIn);
Date endTime2 = new Date();
- long timeInSeconds2 =
(endTime2.getTime()-this.startDate.getTime())/1000;
-
- System.out.println("3 send start , end ,
delta "+this.startDate+" "+endTime2+" :timeInSeconds: "+timeInSeconds2);
-
+ long timeInSeconds2 = (endTime2.getTime() -
this.startDate
+ .getTime()) / 1000;
+
+ System.out.println("3 send start , end , delta " +
this.startDate
+ + " " + endTime2 + " :timeInSeconds: "
+ timeInSeconds2);
+
ConnectionBean.isloading = false;
} catch (Exception e) {
- StartScreen.instance.showBandwidthWarning("Exception:
"+e.getMessage());
+ StartScreen.instance.showBandwidthWarning("Exception: "
+ + e.getMessage());
e.printStackTrace();
}
}
=======================================
---
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java
Mon Aug 15 11:47:14 2011
+++
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipDeltaPackage.java
Sun Sep 4 11:34:15 2011
@@ -1,5 +1,7 @@
package org.openmeetings.test.server;
+import static
org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
@@ -7,6 +9,14 @@
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+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 junit.framework.TestCase;
@@ -15,9 +25,7 @@
import org.openmeetings.client.beans.ClientConnectionBean;
import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @author sebastianwagner
@@ -56,12 +64,21 @@
ByteArrayOutputStream out = new ByteArrayOutputStream();
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(image);
-
- encpar.setQuality(ClientConnectionBean.imgQuality,
false);
- encoder.setJPEGEncodeParam(encpar);
- encoder.encode(image);
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter = ImageIO
+ .getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new JPEGImageWriteParam(
+ Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new IIOImage(image, null, null),
+ iwparam);
imageScreen.flush();
=======================================
---
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java
Mon Aug 15 11:47:14 2011
+++
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestGZipPackage.java
Sun Sep 4 11:34:15 2011
@@ -1,5 +1,7 @@
package org.openmeetings.test.server;
+import static
org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
@@ -8,19 +10,23 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.openmeetings.client.beans.ClientConnectionBean;
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
/**
* @author sebastianwagner
*
@@ -58,12 +64,21 @@
ByteArrayOutputStream out = new ByteArrayOutputStream();
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(image);
-
- encpar.setQuality(ClientConnectionBean.imgQuality,
false);
- encoder.setJPEGEncodeParam(encpar);
- encoder.encode(image);
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter = ImageIO
+ .getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new JPEGImageWriteParam(
+ Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new IIOImage(image, null, null),
+ iwparam);
imageScreen.flush();
=======================================
---
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java
Mon Aug 15 11:47:14 2011
+++
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestJPEGZipPackage.java
Sun Sep 4 11:34:15 2011
@@ -1,23 +1,28 @@
package org.openmeetings.test.server;
+import static
org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.junit.Test;
-import org.openmeetings.client.beans.ClientConnectionBean;
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @author sebastianwagner
@@ -42,11 +47,21 @@
//PNGEncoder
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(imageScreen);
- encpar.setQuality(ClientConnectionBean.imgQuality,
false);
- encoder.setJPEGEncodeParam(encpar);
- encoder.encode(imageScreen);
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter = ImageIO
+ .getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new JPEGImageWriteParam(
+ Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new IIOImage(imageScreen, null,
null),
+ iwparam);
imageScreen.flush();
=======================================
---
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java
Mon Aug 15 11:47:14 2011
+++
/trunk/singlewebapp/src/test/org/openmeetings/test/server/TestPNGZipPackage.java
Sun Sep 4 11:34:15 2011
@@ -1,23 +1,28 @@
package org.openmeetings.test.server;
+import static
org.openmeetings.client.beans.ClientConnectionBean.imgQuality;
+
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
+import java.util.Iterator;
+import java.util.Locale;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import javax.imageio.IIOImage;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.ImageWriter;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.junit.Test;
-import org.openmeetings.client.beans.ClientConnectionBean;
-
-import com.sun.image.codec.jpeg.JPEGCodec;
-import com.sun.image.codec.jpeg.JPEGEncodeParam;
-import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @author sebastianwagner
@@ -42,11 +47,21 @@
//PNGEncoder
- JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
- JPEGEncodeParam encpar =
encoder.getDefaultJPEGEncodeParam(imageScreen);
- encpar.setQuality(ClientConnectionBean.imgQuality,
false);
- encoder.setJPEGEncodeParam(encpar);
- encoder.encode(imageScreen);
+ // Find a jpeg writer
+ ImageWriter writer = null;
+ Iterator<ImageWriter> iter = ImageIO
+ .getImageWritersByFormatName("jpg");
+ if (iter.hasNext()) {
+ writer = iter.next();
+ }
+ writer.setOutput(out);
+ ImageWriteParam iwparam = new JPEGImageWriteParam(
+ Locale.getDefault());
+
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+ iwparam.setCompressionQuality(imgQuality);
+
+ writer.write(null, new IIOImage(imageScreen, null,
null),
+ iwparam);
imageScreen.flush();
--
You received this message because you are subscribed to the Google Groups
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/openmeetings-dev?hl=en.