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 ([email protected]
* @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(); 

}

解决方案 »

  1.   

    Servlet版的: import javax.servlet.*; 
    import javax.servlet.http.*; 
    import java.io.*; 
    import java.awt.*; 
    import javax.imageio.ImageIO; 
    import java.awt.image.*; public class SnapScreenServlet 
    extends HttpServlet { 
    private static final String CONTENT_TYPE = "image/png"; //Initialize global variables 
    public void init() throws ServletException { 
    } //Process the HTTP Get request 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws 
    ServletException, IOException { 
    if (request.getParameter("lzb") != null) { 
    doPost(request, response); 

    else { 
    response.sendError(response.SC_FORBIDDEN); 

    } //Process the HTTP Post request 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws 
    ServletException, IOException { 
    response.setContentType(CONTENT_TYPE); 
    try { 
    BufferedImage screenshot = (new Robot()).createScreenCapture(new 
    Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
    ImageIO.write(screenshot, "png", response.getOutputStream()); 

    catch (Exception ex) { 
    System.out.println(ex); 
    response.sendError(response.SC_INTERNAL_SERVER_ERROR, ex.getMessage()); 

    } //Clean up resources 
    public void destroy() { 

    } web.xml部分: <servlet> 
    <servlet-name>snapscreenservlet</servlet-name> 
    <servlet-class>com.bluepure.commons.servlets.SnapScreenServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>snapscreenservlet</servlet-name> 
    <url-pattern>/snapscreenservlet</url-pattern> 
    </servlet-mapping> 
    <servlet>