Total members 10259 | Gratitudes |It is currently Mon May 21, 2012 4:12 pm Login / Join Codemiles


All times are UTC [ DST ]




Post new topic Reply to topic  Quick reply  [ 1 post ] 
Author Topic
 Topic subject: Screen Capture and multicast
PostPosted: Fri Oct 17, 2008 12:50 am 
Offline
Mastermind
User avatar

Joined: Tue Mar 27, 2007 10:55 pm
Posts: 2277
Location: Earth
Has thanked: 39 time
Have thanks: 61 time

* 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 : sunil_gupta20801@redifmail.com

_________________
Currenlty programming with : java , html , php , and javascript . (OCJP-6 certified )


TOP
 Profile Send private message  
Reply with quote  
Post new topic Reply to topic Quick reply  [ 1 post ] 
Quick reply


  


 Similar topics
 Splash Screen
 My Header is Not Fitting to the Screen!
 Packet Capture and Analyzer
 multi screen pcs?
 Multicast packets in Hub
 how to screen scrape or grab some parts of a website?
 level of conformance in multicast
 Senior Java Developer for Prime Broker Trade Capture - USA
 Knowlgde net Multicast Network
 full Screen Graphics

All times are UTC [ DST ]


Users browsing similar posts

Users browsing this forum: No registered users and 2 guests



Jump to:  
Previous Topic | Next Topic 




Home
General Talks
Finished Projects
Code Library
Games
Tutorials

Java
C/C++
C-sharp
php
Script
JSP/Servlets
Ajax
ASP/ASP.net
Google SEO
Database
Communications
Phpbb3 styles
Photoshop tutorials
Flash tutorials
Find a job






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team