/src/main/java/com/wet/wired/jrc/frame/capture/ScreenGrabber.java

http://java-remote-control.googlecode.com/ · Java · 46 lines · 35 code · 11 blank · 0 comment · 0 complexity · 2a1e13e582f3cc8f06e7d4de9e93a63d MD5 · raw file

  1. package com.wet.wired.jrc.frame.capture;
  2. import java.awt.Dimension;
  3. import java.awt.Rectangle;
  4. import java.awt.Robot;
  5. import java.awt.Toolkit;
  6. import java.awt.image.BufferedImage;
  7. import com.wet.wired.jrc.frame.Frame;
  8. public class ScreenGrabber implements FrameGrabber {
  9. private Robot robot;
  10. private Rectangle screenRectangle;
  11. public ScreenGrabber() throws FrameCaptureException {
  12. initialize();
  13. }
  14. private void initialize() throws FrameCaptureException {
  15. try{
  16. robot = new Robot();
  17. screenRectangle = new Rectangle(Toolkit.getDefaultToolkit ().getScreenSize());
  18. } catch (Exception e) {
  19. throw new FrameCaptureException("Failed to initialize ScreenGrabber",e);
  20. }
  21. }
  22. @Override
  23. public Dimension getFrameSize() {
  24. return screenRectangle.getSize();
  25. }
  26. @Override
  27. public Frame grabFrame() {
  28. BufferedImage grab = robot.createScreenCapture(screenRectangle);
  29. int[] rawData = new int[screenRectangle.width*screenRectangle.height];
  30. grab.getRGB(0,0,screenRectangle.width,screenRectangle.height,rawData,0,screenRectangle.width);
  31. Frame frame = new Frame(screenRectangle.width,screenRectangle.height);
  32. frame.setData(rawData);
  33. return frame;
  34. }
  35. }