java 利用java运行时的方法得到当前屏幕截图的方法(转)

 

将截屏图片保存到本地路径:

package com.test;

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class MainRun {

    /**
     * @param args
     */
    public static void main(String[] args) {

        try {
            Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
            BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0,
                    0,(int)dimension.getWidth(),(int)dimension.getHeight()));
            File file = new File("C:/screen.jpg");
            ImageIO.write(screenshot, "jpg", file);
        } catch (HeadlessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (AWTException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

 

web版,将显示实时的图片作为流返回到页面:

/**
     * 得到当前屏幕截图
     *
     * @param request
     * @param response
     */
    private void getScreenImg(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Thread.sleep(3000);
        response.setContentType("image/jpg");
        ServletOutputStream sos = response.getOutputStream();
        // 禁止页面缓存
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        // 创建内存图象并获得其图形上下文
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        BufferedImage screenshot = (new Robot())
                .createScreenCapture(new Rectangle(0, 0, (int) dimension
                        .getWidth(), (int) dimension.getHeight()));
        // 将图像输出到客户端
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ImageIO.write(screenshot, "jpg", bos);
        byte[] buf = bos.toByteArray();
        response.setContentLength(buf.length);
        sos.write(buf);
        bos.close();
        sos.close();
    }

 

 

http://blog.csdn.net/songylwq/article/details/7714603

 

时间: 2024-10-26 22:49:05

java 利用java运行时的方法得到当前屏幕截图的方法(转)的相关文章

java显示当前运行时的参数(java运行参数)_java

显示当前运行java代码的运行时的各种参数. 不带显String操作. 复制代码 代码如下: package systeminfo; import java.util.Iterator;import java.util.Map.Entry;import java.util.Properties; public class sysinfo {  public static void main(String[] args) {  Properties p = System.getProperties

java 利用java反射机制动态加载类的简单实现_java

如下所示: ////////////////// Load.java package org.bromon.reflect; import java.util.ArrayList; import java.util.List; public class Load implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<

Java实现软件运行时启动信息窗口的方法_java

本文实例形式详述了Java实现一个程序运行时的启动窗口效果,如常用的Microsoft Word. Borland JBuilder 等,这样的窗口称为信息窗口.使用信息窗口的好处是可以使用户在等待软件主界面出现前的一段时间中得知软件运行状态.本例将演示如何来实现信息窗口,当打开程序时,信息窗口先显示,并在窗口上倒计时,直到"waiting 0"时,关闭该窗口,显示程序的主窗口. 该功能的主要实现方法如下: 一般来说,大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承JFrame

举例讲解Java的RTTI运行时类型识别机制_java

1.RTTI:运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就来说下RTTI. RTTI:在运行时,识别一个对象的类型.但是这个类型在编译时必须已知. 下面通过一个例子来看下RTTI的使用.这里涉及到了多态的概念:让代码只操作基类的引用,而实际上调用具体的子类的方法,通常会创建一个具体的对象(Circle,Square,或者Triangle,见下例),把它向上转型为Shape(忽略了对象的具体类型),并在后面

Java读写txt文件时防止中文乱码问题出现的方法介绍_java

问题:在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因.当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码.为了避免可能的中文乱码问题,最好在文件写入和读出的时候

Java JDBC 连接Oracle时找不到驱动的处理方法

异常如下: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:1

【Java】java使用反射访问对象方法和成员变量

虽然java是一门静态语言,但是java的反射机制却给java提供了很强大的动态特性,其特点是能让java支持在运行时才能得知名称与内部结构的类,并能访问其所有的方法和成员变量,包括私有方法和私有成员变量.下面我写了一个比较简洁的测试代码,供参考和使用. 测试类 //OBClass.java package com.obo.javaassistdemo; public class OBClass { public int publicField= 999; private int private

HotSpot运行时概览#2

解释器 (译者注:解释器.编译器坑太大,翻译太水请见谅:) 当前HotSpot用于执行字节码的解释器是一种基于模板的解释器.虚拟机启动时,InterpreterGenerator会使用TemplateTable中的信息(每一个字节码对应的汇编代码)在内存中生成一个解释器.一个模板描述一个字节码.TemplateTable定义了所有字节码的模板,并提供了访问的方法.非生产标记-XX:+PrintInterpreter可以用来查看VM启动时在内存中生成的模板. 使用模板要优于传统的switch循环,

一起谈.NET技术,为什么我支持托管运行时(虚拟机)

最近博客园上在炒关于C#性能的问题,其实应该说是.NET性能的问题,其中某位仁兄提出,他希望C#能够直接编译为原生代码,而不是在CLR这样一个托管运行时上执行,因为虚拟机啊,JIT什么的性能差.后来发到TL上以后,也有朋友认为,"基于虚拟机的语言都是大公司为了利益在推动,说白了就是政治",因此"对C#提高性能的建议感到可笑,因为它本来就不是用来开发高性能程序的",再有,"C.C++已经明确不和这些后进争所谓的'容易开发'的头衔",那么其他语言为什