两个java 拷屏代码

 
一个是调用sun API,一个用标准java API,用sun API时,如果用Eclipse来调试,需要注意的是不能
引用Eclipse 环境提供的JRE System Library,要手工引入%java_home%/jre/lib 对应的jar,rt.jar 包含的一些
API,Eclipse环境变量库做了限制访问。

用Sun API
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class SaveAsJpg {

 public SaveAsJpg() {

 }

 public static void main(String[] args) {

  try { 

   BufferedImage screenshot = (new Robot())
     .createScreenCapture(new Rectangle(0, 0, 800, 600));

   OutputStream out = new BufferedOutputStream(new FileOutputStream(
     "d:/test1.jpg"));

   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

   encoder.encode(screenshot);

   out.close();

  }

  catch (Exception exc) {
   exc.printStackTrace();
  }

  finally {

   System.exit(0);

  }

 }

}

用标准API
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

/*******************************************************************
* 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
* This JavaBean is used to snapshot the GUI in a  
* Java application! You can embeded
* it in to your java application source code, and us
* it to snapshot the right GUI of the application
* @see javax.ImageIO
* @author liluqun (liluqun@263.net[/email])
* @version 1.0
*
*****************************************************/

public class GuiCamera
{  
   private String fileName; //文件的前缀
   private String defaultName = "GuiCamera";
   static int serialNum=0;
   private String imageFormat; //图像文件的格式
   private String defaultImageFormat="png";
   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

   /****************************************************************
    * 默认的文件前缀为GuiCamera,文件格式为PNG格式
    * The default construct will use the default  
    * Image file surname "GuiCamera",  
    * and default image format "png"
    ****************************************************************/
   public GuiCamera() {
     fileName = defaultName;
     imageFormat=defaultImageFormat;
   
   }

   /****************************************************************
    * @param s the surname of the snapshot file
    * @param format the format of the  image file,  
    * it can be "jpg" or "png"
    * 本构造支持JPG和PNG文件的存储
    ****************************************************************/
   public GuiCamera(String s,String format) {
   
     fileName = s;
     imageFormat=format;
   }
   
   /****************************************************************
    * 对屏幕进行拍照
    * snapShot the Gui once
    ****************************************************************/
   public void snapShot() {
   
     try {
     //拷贝屏幕到一个BufferedImage对象screenshot
       BufferedImage screenshot = (new Robot()).createScreenCapture(new
           Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
       serialNum++;
       //根据文件前缀变量和文件格式变量,自动生成文件名
       String name=fileName+String.valueOf(serialNum)+"."+imageFormat;
       File f = new File(name);
       System.out.print("Save File "+name);
     //将screenshot对象写入图像文件
       ImageIO.write(screenshot, imageFormat, f);
       System.out.print("..Finished!/n");
     }
     catch (Exception ex) {
       System.out.println(ex);
     }
   }

   public static void main(String[] args)
   {
       GuiCamera cam= new GuiCamera("d://test2", "png");//
       cam.snapShot();
   }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值