使用java将网页转换为jpeg图像
我正在用Java构建一个web应用程序,如果我将网页的URL作为输入,我需要整个网页的屏幕截图 我的基本想法是捕获渲染组件的显示缓冲区..我不知道怎么做。。使用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
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,实际上我是作为独立应用程序运行的。