| Displaying  Source Code(s)  
 
 
          
            |  |  |  
            | 
              
                | Screen Capture and multicast 
 --------------------------------------------------------------------------------
 
 Description : This project captures the screen and compress the 
                captured image and then multicast it, so that all the machines 
                connected with that multicast address can receive the captured 
                screen.
 
 Code :
 
 /////////////////////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 <BR>+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=<BR>+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 <BR>+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<BR>+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
 
 
 
 |  |  |