开源Java库生成服务器端的网页缩略图

我正在寻找一个开源Java库来为给定的URL生成缩略图。 我需要捆绑此function,而不是呼叫外部服务,例如Amazon或websnapr 。

http://www.webrenderer.com/在这篇文章中提到: 服务器生成的网页截图 ,但它是一个商业解决方案。

我希望有一个基于Java的解决方案,但可能需要考虑执行外部进程,如khtml2png ,或集成html2ps之类的东西。

有什么建议么?

首先想到的是使用AWT捕获屏幕抓取(请参阅下面的代码)。 您可以查看捕获JEdi​​torPane , JDIC WebBrowser控件或SWT 浏览器 (通过AWT嵌入支持 )。 后两者嵌入了原生浏览器(IE,Firefox),因此引入依赖关系; JEdi​​torPane HTML支持在HTML 3.2处停止。 可能这些都不适用于无头系统。

import java.awt.Component; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JLabel; public class Capture { private static final int WIDTH = 128; private static final int HEIGHT = 128; private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); public void capture(Component component) { component.setSize(image.getWidth(), image.getHeight()); Graphics2D g = image.createGraphics(); try { component.paint(g); } finally { g.dispose(); } } private BufferedImage getScaledImage(int width, int height) { BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffer.createGraphics(); try { g.drawImage(image, 0, 0, width, height, null); } finally { g.dispose(); } return buffer; } public void save(File png, int width, int height) throws IOException { ImageIO.write(getScaledImage(width, height), "png", png); } public static void main(String[] args) throws IOException { JLabel label = new JLabel(); label.setText("Hello, World!"); label.setOpaque(true); Capture cap = new Capture(); cap.capture(label); cap.save(new File("foo.png"), 64, 64); } } 

您实际上要求Java可以访问完整的渲染引擎。 就个人而言,我会为自己省去麻烦,并呼唤孩子的过程。

否则,我遇到了这个纯Java浏览器: Lobo

是不是有一个QA /测试网站/服务,它可以让你指定一个你想要在某个浏览器(IE,FIREFOX,SAFARI版本x,y,z)中呈现的网页,他们会将快照邮寄回您。 “

我不记得这项服务 – 也许其他经常出现ajaxian的开发者可能还记得它吗?

尝试调用ImageMagick 。 我知道它不是Java解决方案,但你可以用Java调用它,甚至还有一个Java前端 ,尽管我在这方面的成功较少。