Chinaunix

标题: 冒着生命危险,从别的地方给兄弟们嫖了一段辑屏的代码过来 [打印本页]

作者: jamesbang2003    时间: 2006-06-09 16:52
标题: 冒着生命危险,从别的地方给兄弟们嫖了一段辑屏的代码过来
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)
* @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:\\Hello", "png");//

        cam.snapShot();
    }
}
作者: aixy    时间: 2006-06-09 17:33
Good
作者: scenery_86    时间: 2006-06-09 17:37
顶一个
作者: perryhg    时间: 2006-06-09 21:51
这个Robot类功能很强的说,据说可以编程让鼠标自己移动呢,鼓励一下楼主!不过截个屏也不用冒生命危险吧?

[ 本帖最后由 perryhg 于 2006-6-9 21:54 编辑 ]
作者: xxjoyjn    时间: 2006-06-09 22:26
这个代码比 print screen要强一点
作者: 夜夜呆    时间: 2006-06-10 14:14
呵呵 好咚咚....!~
感谢008 ....
作者: dxnian    时间: 2006-06-10 14:17
好东东,顶下。呵呵
作者: 小粥    时间: 2006-06-10 14:17
up
作者: 追梦南风    时间: 2006-06-10 17:49
顶,好东西!我是个新手!
作者: carinnar    时间: 2006-06-11 09:05
很不错!谢谢!
作者: 黑眼豆豆    时间: 2006-06-12 13:04
very good
作者: tree135311    时间: 2006-06-14 21:57
强    顶一下
作者: liouville_1984    时间: 2006-08-24 08:18
标题: up
好东东,顶
作者: lauchee    时间: 2006-12-27 14:41
很棒,真是个牛人啊.
作者: teststar    时间: 2007-06-03 11:40
支持一个。
作者: houyue    时间: 2007-06-03 14:05
好东东。顶一下啦。
作者: ruknow    时间: 2007-06-03 18:14
我想在snapShot()方法中加个while(true) {...}, 再放到哪个 LM 的机器上跑一跑
作者: shuben2000    时间: 2007-12-13 11:48
谢谢!
作者: 给个理由先    时间: 2007-12-14 22:57
BufferedImage screenshot = (new Robot()).createScreenCapture(new
            Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));

就调用了一个方法,没看出有啥特别
作者: realmon    时间: 2007-12-15 09:06
和print screen不一样么?
作者: saft_len    时间: 2008-01-04 15:40
好东西,收藏了.
慢慢研究.
谢谢楼主啊.
作者: fecasmoy123    时间: 2008-01-05 02:24
有创意
作者: flyingnn    时间: 2008-01-06 23:31
新手来D,好好学习.
作者: keer2345    时间: 2009-04-15 17:36
佩服,实在是佩服。
如果应用在web上的话,可以加上延时。
一般运行时立即截图的话,看到的也只是人家的浏览器页面而已。
作者: starxing    时间: 2009-04-15 20:15
原帖由 keer2345 于 2009-4-15 17:36 发表
佩服,实在是佩服。
如果应用在web上的话,可以加上延时。
一般运行时立即截图的话,看到的也只是人家的浏览器页面而已。

这个不能用于WEB应用上吧,
作者: qany520    时间: 2009-04-15 21:36
可以,
作者: hdc1112    时间: 2009-04-15 23:54
我以前就用这个实现了一个网页版的远程桌面显示~ 不过很挫的说~~
作者: caojiqun    时间: 2009-04-16 22:57
请比较下LZ的贴的代码和这个帖子有何差别!
http://www.chinaitpower.com/A200508/2005-08-05/183492.html
作者: hdc1112    时间: 2009-04-17 10:56
这个东西实际上如果要做成浏览器版的桌面显示的话还有很长的路要走。
如果是单纯刷屏的话,闪烁太严重。
这种东西不是这么简单的

而且robot类的简单应用不算什么
作者: liuxuejin    时间: 2010-09-21 14:46
8错!
作者: zxflb    时间: 2010-11-24 15:50
不错 收藏了
作者: chier_system    时间: 2011-03-30 10:38
好东西
作者: lh_fengyuzhe    时间: 2011-03-30 21:15
不错,收藏,顺便学习
作者: shengfuqiang    时间: 2011-04-07 11:12
这种代码,没什么好稀奇的,不是轻视楼主的劳动成果,楼主贴出来代码,说明楼主对api的熟悉程度比我高,这是完成任务的代码,不是让我耳目一新的代码
作者: pitonas    时间: 2012-02-04 21:51
挺好的
作者: iminto    时间: 2012-02-06 22:54
不错的东西。
作者: hansion3406    时间: 2012-10-22 10:42
向楼主致敬
作者: yanghaiju    时间: 2012-11-30 14:06
:wink::wink::wink:
作者: 方兆国    时间: 2013-01-13 15:25
回复 1# jamesbang2003


    刚开始以为骗人的,结果发现还真可以用,谢谢
作者: cj19877    时间: 2013-07-31 22:29
这个顶一下。也许将来用得着呢
作者: cxhzqhzq    时间: 2013-08-01 15:35
哇靠,这个好东东
作者: ddd010    时间: 2013-11-29 20:59
还真是好东西。运气不错,有找到一个。
作者: 2009532140    时间: 2013-12-30 07:32
哈哈…NBILITY




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2