Fri Oct 17, 2008 12:50 am
/////////////////////ImageCanvas.java/////////////////////
import com.sun.image.codec.jpeg.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.geom.*;
public class ImageCanvas implements Runnable
{
public Robot robo;
byte [] dataone;
int count=0;
public BufferedImage myImage;
public InetAddress multicastAddress;
public MulticastSocket socket;
public static void main(String args[])
{
try
{
ImageCanvas img=new ImageCanvas();
new Thread(img).start();
}
catch(Exception e)
{
System.out.println("Errr in Imgcanvas "+e);
}
}
public void start()
{
}
public ImageCanvas()
{
try
{
robo=new Robot();
}
catch(Exception e)
{
System.out.println("Errr in Imgcanvas cons
"+e);
}
}
public void run()
{
for (;;)
{
try
{
myImage=robo.createScreenCapture(new
Rectangle(0,0,800,800));
//myImage=robo.createScreenCapture(new
Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
int x1=155;int y1=150;int x2=205;int
y2=185;
int red = 255;
int green = 0;
int blue = 0;
int transparency = 100;
// do the highlighting
Graphics graphics =
myImage.getGraphics();
Color color = new Color(red, green,
blue,255 * transparency/100);
graphics.setColor(color);
graphics.drawString("Screen Capture " +
new java.util.Date(),50, myImage.getHeight() - 10);
int thumbWidth=500,thumbHeight=500;
double thumbRatio = (double)thumbWidth
/
(double)thumbHeight;
int imageWidth =
myImage.getWidth(null);
int imageHeight =
myImage.getHeight(null);
double imageRatio = (double)imageWidth
/
(double)imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int)(thumbWidth
/
imageRatio);
} else {
thumbWidth = (int)(thumbHeight
*
imageRatio);
}
// draw original image to thumbnail
image
object and
// scale it to the new size on-the-fly
BufferedImage thumbImage = new BufferedImage(thumbWidth,thumbHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D =
thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHint
s.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(myImage, 0, 0,
thumbWidth, thumbHeight, null);
BufferedOutputStream out = new
BufferedOutputStream(new FileOutputStream("screencapture.jpg"));
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam(thumbImage);
int quality = Integer.parseInt("75");
quality = Math.max(0, Math.min(quality,
100));
param.setQuality((float)quality /
100.0f,
false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
File file=new
File("screencapture.jpg");
RandomAccessFile f=new
RandomAccessFile(file,"r");
System.out.println(" transmit len=
"+f.length());
byte [] data = new
byte[(int)f.length()];
if(count++==0)
dataone=new byte[data.length];
f.read(data);
if(dataone.length!=data.length)
{
System.out.println("Transmitting");
multicastAddress =
InetAddress.getByName("224.5.6.7");
socket = new
MulticastSocket(6789);
DatagramPacket sendPacket=new
DatagramPacket(data,data.length,multicastAddress,6789);
socket.send(sendPacket);
}
dataone=data;
f.close();
file.delete();
}
catch(Exception e)
{
System.out.println("Errr in Imgcanvas
thread "+e);
}
}
}
}// End of ImageCanvas.java
////////////////////////////////////Test.java/////////////////
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.net.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
class screenCapture extends Canvas implements Runnable
{
Image image=null;
Robot robo =null;
byte buffer[]=new byte[60000];
static MediaTracker tracker;
public screenCapture ()
{
}
public void run()
{
for(; ;)
{
try
{
InetAddress
mdd=InetAddress.getByName("224.5.6.7");
MulticastSocket sck=new
MulticastSocket(6789);
sck.joinGroup(mdd);
DatagramPacket pck=new
DatagramPacket(buffer,buffer.length);
sck.receive(pck);
image =
Toolkit.getDefaultToolkit().createImage(pck.getData());
image=image.getScaledInstance(this.getWidth(),this.getHeight(),2);
tracker = new MediaTracker(this);
tracker.addImage(image,0);
}
catch(Exception e)
System.out.println("Errr in test "+e);
}
try
{
tracker.waitForID(0);
}
catch(Exception e)
{
System.out.println("Errr in tracker
"+e);
}
repaint();
} // end of for loop
}
public void paint (Graphics g)
{
try
{
g.drawImage(image,0,0,this);
}
catch(Exception e){System.out.println("Errr in paint
"+e);}
return;
}
public void update(Graphics g)
{
paint(g);
}
}
public class Test
{
public static void main(String args[])
{
JFrame fram = new JFrame();
screenCapture capture = new screenCapture();
fram.getContentPane().add(capture);
fram.setSize(510,520);
fram.setLocation(600,200);
fram.show();
new Thread(capture).start();
}
} //end of Test.java
Codemiles.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com
Powered by phpBB © phpBB Group.