资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
今天看到某网友关于“如何以Java实现网页截图技术”的咨询帖,由于出现该咨询的地点非常不适合较长回复,故以博文形式回答。事实上,如果您想以Java实现网页截图,也就是“输入一段网址,几秒钟过后就能截取一张网页缩略图”的效果。那么,您至少有3种方式可以选择。 1、最直接的方式使用Robot方法详解:该方法利用Robat提供的强大桌面操作能力,硬性调用浏览器打开指定网页,并将网页信息保存到本地。优势:简单易用,不需要任何第三方插件。缺点:不能同时处理大量数据,技术含量过低,属于应急型技巧。实现方法:使用如下代码即可。Java代码 public static void main(String args) throws MalformedURLException,          IOException, URISyntaxException, AWTException       /此方法仅适用于JdK1.6及以上版本      Desktop.getDesktop().browse(              new URL(;http:/google.com/intl/en/;).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(;google.jpg;);     2、最常规的方式利用JNI,调用第三方C/C+组件方法详解:目前来讲,Java领域对于网页截图组件的开发明显不足(商机?),当您需要完成此种操作时,算得上碰到了Java的软肋。但是,众所周知Java也拥有强大的JNI能力,可以轻易将C/C+开发的同类组件引为己用。优势:实现简单,只需要封装对应的DLL文件,就可以让Java实现同类功能。劣势:同其他JNI实现一样,在跨平台时存在隐患,而且您的程序将不再属于纯Java应用。实现方法:可参见此用例,具体封装何种C/C+组件请自行选择。PS:示例来源于ACA HTML to Image Converter项目(http:/www.acasystems.com/en/web-thumb-activex/faq-convert-html-to-image-in-java.htm ),这是一个收费的HTML转Image第三方组件,但封装方式在Java中大同小异。引用JNI封装:Java代码 import sun.awt.*;  import java.awt.*;  import javax.swing.*;  import java.awt.event.*;  import java.awt.*;  import java.awt.peer.*;  public class Snap      static          System.loadLibrary(;Snap;);        public static void main( String argv )          Snap t_xSnap = new Snap();      t_xSnap.Start(;http:/www.google.com;, snapshot-google.png;);        public native void Start(String pi_strURL, String pi_strImageName);     CPP部分的实现:Cpp代码 #include   #include   #include snap.h;  #pragma comment(lib,;atl.lib;)  #import ./././acawebthumb.dll; no_namespace  JNIEXPORT void JNICALL Java_Snap_Start(JNIEnv *pEnv, jobject, jstring pi_strUrl, jstring pi_strFileName)      CoInitialize(0);    _bstr_t t_strUrl = pEnv-;GetStringUTFChars(pi_strUrl, 0);    _bstr_t t_strFileName = pEnv-;GetStringUTFChars(pi_strFileName, 0);        IThumbMakerPtr HTML_Converter = NULL;    HRESULT hr = HTML_Converter.CreateInstance(L;ACAWebThumb.ThumbMaker;);        if (SUCCEEDED(hr)           HTML_Converter-;SetURL(t_strUrl);      if ( 0 = HTML_Converter-;StartSnap() )        HTML_Converter-;SaveImage(t_strFileName);     &nbs
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号