Total members 11889 |It is currently Thu Mar 28, 2024 8:49 pm Login / Join Codemiles

Java

C/C++

PHP

C#

HTML

CSS

ASP

Javascript

JQuery

AJAX

XSD

Python

Matlab

R Scripts

Weka






* Project Name:   Screen Capture and multicast
* Programmer:   Sunil Kumar Gupta
* Type:   Java Swing
* Technology:  Java
* IDE:   Any
* 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
"+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

Code:
////////////////////////////////////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



Author mail : [email protected]



_________________
M. S. Rakha, Ph.D.
Queen's University
Canada


Author:
Mastermind
User avatar Posts: 2715
Have thanks: 74 time
Post new topic Reply to topic  [ 1 post ] 

  Related Posts  to : Screen Capture and multicast
 Packet Capture and Analyzer     -  
 Senior Java Developer for Prime Broker Trade Capture - USA     -  
 Splash Screen     -  
 My Header is Not Fitting to the Screen!     -  
 full Screen Graphics     -  
 Multicast packets in Hub     -  
 MacBook Pro Turned Into a Blue Screen     -  
 Full Screen graphics (Lesson 2).     -  
 level of conformance in multicast     -  
 how to screen scrape or grab some parts of a website?     -  










Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team
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