Java实现网页全屏截图并保存图片实例代码介绍。
所需jar包和完整代码下载地址:http://download.csdn.net/detail/zajin/6705271
[java] view plaincopyprint?
- package shot;
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.geom.AffineTransform;
- import java.awt.image.AffineTransformOp;
- import javax.swing.SwingUtilities;
- import chrriis.dj.nativeswing.swtimpl.NativeComponent;
- import chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;
- /**
- * @Author Rain
- * @Date Dec 12, 2013
- * @Email 2527350@QQ.com
- * @Discription undefined
- */
- public class Main extends JPanel {
- private static final long serialVersionUID = 1L;
- // 行分隔符
- final static public String LS = System.getProperty(“line.separator”, “\n”);
- // 文件分割符
- final static public String FS = System.getProperty(“file.separator”, “\\”);
- //以javascript脚本获得网页全屏后大小
- final static StringBuffer jsDimension;
- static {
- jsDimension = new StringBuffer();
- jsDimension.append(“var width = 0;”).append(LS);
- jsDimension.append(“var height = 0;”).append(LS);
- jsDimension.append(“if(document.documentElement) {“).append(LS);
- jsDimension.append(“ width = Math.max(width, document.documentElement.scrollWidth);”).append(LS);
- jsDimension.append(“ height = Math.max(height, document.documentElement.scrollHeight);”).append(LS);
- jsDimension.append(“}”).append(LS);
- jsDimension.append(“if(self.innerWidth) {“).append(LS);
- jsDimension.append(“ width = Math.max(width, self.innerWidth);”).append(LS);
- jsDimension.append(“ height = Math.max(height, self.innerHeight);”).append(LS);
- jsDimension.append(“}”).append(LS);
- jsDimension.append(“if(document.body.scrollWidth) {“).append(LS);
- jsDimension.append(“ width = Math.max(width, document.body.scrollWidth);”).append(LS);
- jsDimension.append(“ height = Math.max(height, document.body.scrollHeight);”).append(LS);
- jsDimension.append(“}”).append(LS);
- jsDimension.append(“return width + ‘:’ + height;”);
- }
- public Main(final String url, final int maxWidth, final int maxHeight) {
- super(new BorderLayout());
- JPanel webBrowserPanel = new JPanel(new BorderLayout());
- final String fileName = System.currentTimeMillis() + “.jpg”;
- final JWebBrowser webBrowser = new JWebBrowser(null);
- webBrowser.setBarsVisible(false);
- webBrowser.navigate(url);
- webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
- add(webBrowserPanel, BorderLayout.CENTER);
- JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
- webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
- // 监听加载进度
- public void loadingProgressChanged(WebBrowserEvent e) {
- // 当加载完毕时
- if (e.getWebBrowser().getLoadingProgress() == 100) {
- String result = (String) webBrowser.executeJavascriptWithResult(jsDimension.toString());
- int index = result == null ? -1 : result.indexOf(“:”);
- NativeComponent nativeComponent = webBrowser.getNativeComponent();