使用java将网页转换为jpeg图像

使用java将网页转换为jpeg图像,java,jpeg,image-capture,webpage-screenshot,Java,Jpeg,Image Capture,Webpage Screenshot,我正在用Java构建一个web应用程序,如果我将网页的URL作为输入,我需要整个网页的屏幕截图 我的基本想法是捕获渲染组件的显示缓冲区..我不知道怎么做。。 plz帮助..我在这个应用程序中使用了一个小技巧: Java应用程序的blog.stackoverflow.com页面(点击图片查看演示视频) 问题是你需要一台专门用于此的机器 所以,诀窍很简单 创建一个以 参数指定要获取的URL 然后用桌面打开它 )将触发当前 韦伯罗瑟 最后,用 并将其保存到diks 比如: class WebS

我正在用Java构建一个web应用程序,如果我将网页的URL作为输入,我需要整个网页的屏幕截图

我的基本想法是捕获渲染组件的显示缓冲区..我不知道怎么做。。
plz帮助..

我在这个应用程序中使用了一个小技巧:

Java应用程序的blog.stackoverflow.com页面(点击图片查看演示视频)

问题是你需要一台专门用于此的机器

所以,诀窍很简单

  • 创建一个以 参数指定要获取的URL

  • 然后用
    桌面打开它
    )
    将触发当前 韦伯罗瑟

  • 最后,用 并将其保存到diks

比如:

 class WebScreenShot {
     public static void main( String [] args ) {
         Desktop.getDesktop().open( args[0] );
         Robot robot = new Robot();
         Image image = robot.createScreenCapture( getScreenResolutionSize() );
         saveToDisk( image );
     }
  }
这个解决方案远非完美,因为它需要整个操作系统,但是如果你能有一个专门用于这个应用的虚拟机,你就可以轻松地浏览网页并截图


将此应用程序作为非侵入性应用程序存在的问题是,到目前为止,还没有一个适合Java的好的html引擎呈现程序

对于可以扩展以支持并发呈现的纯java解决方案,您可以使用java HTML4/CSS2浏览器,例如为GUI提供Swing组件的浏览器。当您实例化这个组件时,您可以调用它的paint(Graphics g)方法将其自身绘制到屏幕外的图像中

E.g.
Component c = ...; // the browser component
BufferedImage bi = new BufferedImage(c.getWidth(), c.getHeight(), TYPE_INT_RGB)
Graphics2d g = bi.createGraphics();    
c.paint(g);
然后可以使用java图像API将其保存为JPG

JPEGImageEncoder encoder = JPEGCodec.createEncoder(new FileOutputStream("screen.jpg"));
enncoder.encode(bi);  // encode the buffered image

与现有的本地浏览器相比,基于Java的浏览器通常显得苍白。但是,由于您的目标是静态图像,而不是交互式浏览器,因此基于java的浏览器在这方面可能已经足够了。

请注意,这在服务器上不起作用。@Balusc Yeap,实际上我是作为独立应用程序运行的。