import java.awt.AWTException;
import java.awt.Desktop;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.imageio.ImageIO;
/**
* 截取网页。
* @author __LuckyStar
* @date 20110416
*/
public class CaptureBrower {
/**
* 截取指定网页
* @param url 网址
* @param folderName 图片保存目录
* @throws IOException
* @throws URISyntaxException
* @throws AWTException
*/
private void capture(String url,String folderName) throws IOException, URISyntaxException, AWTException {
// 打开浏览器
Desktop.getDesktop().browse(new URI(url));
Robot robot = new Robot();
// 最大化浏览器
robot.keyRelease(KeyEvent.VK_F11);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 延迟2S截取屏幕
robot.delay(2000);
// 截取屏幕
Image image = robot.createScreenCapture(new Rectangle(width, height));
// 保存图片
String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
ImageIO.write((RenderedImage) image, "jpg", new File(folderName+File.separator+fileName+".jpg"));
}
/**
* 判断图片保存目录是否存在。<br>
* 不存在则创建。
*/
private void checkFolder(String folderName) {
File dir = new File(folderName);
if (!dir.exists() || !dir.isDirectory()) {
dir.mkdirs();
}
}
/**
* @param args
*/
public static void main(String[] args) {
String folderName = "images";
CaptureBrower cb = new CaptureBrower();
cb.checkFolder(folderName);
try {
cb.capture("http://edu.codepub.com/2010/0825/25343.php", folderName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}