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..*;
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
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment