java实现当前页面保存为图片

方法一:

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
 *
 ******************************************************************************/

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
            //这里 createScreenCapture中的4个参数就是需要截取的图形的2个顶点,也就是通过js确定的2个点
            BufferedImage screenshot = (new Robot())
                    .createScreenCapture(new Rectangle(0, 0,
                            (int) d.getWidth(), (int) d.getHeight()));
            serialNum++;
            // 根据文件前缀变量和文件格式变量,自动生成文件名
            String name = "C:\\"+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! ");
        } catch (Exception ex)
        {
            System.out.println(ex);
        }
    }

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



方法二


import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;

import javax.imageio.ImageIO;

/**
 * @author Ohad Serfaty
 */
public class RendererExample
{


    public static void main(String[] args) throws MalformedURLException,
            IOException, URISyntaxException, AWTException {
        //此方法仅适用于JdK1.6及以上版本
        Desktop.getDesktop().browse(
                new URL("http://baidu.com").toURI());
        Robot robot = new Robot();
        robot.delay(10000);
        Dimension d = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
        int width = (int) d.getWidth();
        int height = (int) d.getHeight();
        //最大化浏览器
        robot.keyRelease(KeyEvent.VK_F11);
        robot.delay(2000);
        Image image = robot.createScreenCapture(new Rectangle(0, 0, width,
                height));
        BufferedImage bi = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
        Graphics g = bi.createGraphics();
        g.drawImage(image, 0, 0, width, height, null);
        //保存图片
        ImageIO.write(bi, "jpg", new File("C:\\google.jpg"));
    }
}

你可能感兴趣的:(java)