2009년 12월 26일 토요일

자바로 바탕화면 캡쳐하기(Capturing window scre...

채팅사이트 조이팅스토리을 운영하는 철이랍니당...

요즘.. 사이트를 어케하면 upgrade할까 고민고민중이랍니다...

솔직히 제가 직접 관리할 수 있는 사이트라면 이래도저래도 해보겠는데

이거 원... 절차도 절차고... 실망이 좀 크다...

뭐 대단한거라고... 걍.. 제가 관리하면 더 잘 하겠구만... 에혀~

솔직히 스팸메일이나 바이럴기법 광고... 이런거 필요가 없는데 말이쥐...

 

정말 잼있는 기능을 넣어서 순수하게 경쟁하고픈 마음인데 참~ 안도와주네...ㅠ.ㅜ

여튼 지금 생각하는 거 중에 하나가 화상채팅, 문자채팅, 메신저, 쪽지 기능등을

기존과는 색다르게 표현해 볼까 고민중인데, 특히 둘이서 각각의 로컬 컴퓨터에서

무언가 잼나는 게임을 할 수 있도록 구상중이다.. 아이디어가 번쩍!!! ㅋㅋㅋ

 

일단 이런거 저런 준비해야할 몇몇가지가 있어서 오늘 웹서핑하며 하나하나 자료를 모으는 중이다..

일단 캡쳐기능도 필요하고...

화상채팅기능도 필요하고......

원격제어도 필요하고................

 

껌이지 뭐~ ㅋㅋ

 

 

 

 

소스코드(Source Code)
------------------------------------------------------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;

public class Main extends JPanel implements Runnable, ActionListener{
 
 JButton btn_capture;
 Image img = null;
 
 public Main()
 {
  this.btn_capture = new JButton("영상캡쳐");
  this.btn_capture.addActionListener(this);
  this.setLayout(new BorderLayout());
  this.add(this.btn_capture, BorderLayout.SOUTH);
 }
 
 public void actionPerformed(ActionEvent e)
 {
  String cmd = e.getActionCommand();
  if(cmd.equals("영상캡쳐"))
  {
   System.out.println("영상을 캡쳐합니다..");
   this.capture();
  }
 }
 
 private void drawImage(Image img, int x, int y)
 {
  Graphics g = this.getGraphics();
  g.drawImage(img,0,0,x,y,this);
  this.paint(g);
  this.repaint();
 }
 
 public void paint(Graphics g)
 {
  if(this.img != null)
   g.drawImage(this.img, 0, 0, this.img.getWidth(this), this.img.getHeight(this), this);
 }
 
 public void capture()
 {
  Robot robot;
  BufferedImage bufImage = null;
  try
  {
   robot = new Robot();
   Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
   
   bufImage = robot.createScreenCapture(area);
   
   //Graphics2D g2d = bufImage.createGraphics();
   int w = this.getWidth();
   int h = this.getHeight();
   
   this.img = bufImage.getScaledInstance(w, h-20, Image.SCALE_DEFAULT);
   //this.repaint();
   this.drawImage(img, w, h);
   //saveJPEGfile("c:\\cap.jpg", bufImage);
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }
 
 public static boolean saveJPEGfile(String filename, BufferedImage bi)
 {
  FileOutputStream out = null;
  try
    {
     out = new FileOutputStream ( filename );
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder ( out );
     JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam ( bi );
     param.setQuality ( 1.0f, false );
     encoder.setJPEGEncodeParam ( param );
 
     encoder.encode ( bi );
     out.close();
    }
    catch ( Exception ex )
    {
     System.out.println ("Error saving JPEG : " + ex.getMessage() );
     return false;
    }
  return true;
 }
 
 
 public void run()
 {
  while(true)
  {
   this.setBackground(Color.RED);
   try
   {
    Thread.sleep(1000);
   }catch(Exception e){}
   this.setBackground(Color.GREEN);
   
   try
   {
    Thread.sleep(1000);
   }catch(Exception e){}
  }
 
 }
 
 public static void createFrame()
 {
  JFrame frame = new JFrame("Jv");
  JFrame.setDefaultLookAndFeelDecorated(true);
  Container cont = frame.getContentPane();
  cont.setLayout(new BorderLayout());
  Main mm = new Main();
  //new Thread(mm).start();
  cont.add(mm, BorderLayout.CENTER);
 
  frame.setSize(400, 400);
  frame.setVisible(true);
 }
 
 public static void main(String...v)
 {
  //new Main();
  JFrame.setDefaultLookAndFeelDecorated(true);
  createFrame();
 }
}

 

춮처: 자바로 바탕화면 캡쳐하기(Capturing window screen by Java program)

 



P 이경철님의 파란블로그에서 발행된 글입니다.

댓글 없음:

댓글 쓰기