您的位置:首页 > 编程语言 > Java开发

Java 实现HTML 页面转成image 图片

2013-03-20 16:05 417 查看


前言

在java 中把HTML转化成图档,思路基本上是现在 AWT or Swing 的Panel上显示网页,在把Panel输出为 image 文件。

java 本身的API有提供相关的结果,但是直接产生的效果不是很好,所以有出现一些 library.


Java Core API

public class HtmlToImage {

protected static void generateOutput() throws Exception {

//load the webpage into the editor
//JEditorPane ed = new JEditorPane(new URL("http://www.google.com"));
JEditorPane ed = new JEditorPane(new URL("http://www.hefeipet.com/client/chongwuzhishi/shenghuozatan/2012/0220/95.html"));
ed.setSize(200,200);

//create a new image
BufferedImage image = new BufferedImage(ed.getWidth(), ed.getHeight(),
BufferedImage.TYPE_INT_ARGB);

//paint the editor onto the image
SwingUtilities.paintComponent(image.createGraphics(),
ed,
new JPanel(),
0, 0, image.getWidth(), image.getHeight());
//save the image to file
ImageIO.write((RenderedImage)image, "png", new File("html.png"));
}
public static void main(String[] args) {
try {
generateOutput();
} catch (Exception e) {
e.printStackTrace();
}
}

}



java-html2image

下载地址:

http://code.google.com/p/java-html2image/

开源, 使用上很简洁。API Doc 和source code 都有。

import gui.ava.html.image.generator.HtmlImageGenerator;

public class Html2ImageTest {

public static void main(String[] args) {
HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
//		imageGenerator
//				.loadHtml("<b>Hello World!</b> Please goto <a title=\"Goto Google\" href=\"http://www.google.com\">Google</a>.");
//imageGenerator.loadUrl("http://mtkplmap2:7001/esdm_web");
imageGenerator.loadUrl("http://www.hefeipet.com/client/chongwuzhishi/shenghuozatan/2012/0220/95.html");
imageGenerator.saveAsImage("hello-world.png");
imageGenerator.saveAsHtmlWithMap("hello-world.html", "hello-world.png");
}

}



Cobra

免费,开源

http://lobobrowser.org/cobra.jsp



public class CobraTest {
public static void main(String[] args) throws Exception {
JFrame window = new JFrame();
HtmlPanel panel = new HtmlPanel();
window.getContentPane().add(panel);
window.setSize(600, 400);
window.setVisible(true);
new SimpleHtmlRendererContext(panel, new SimpleUserAgentContext())
.navigate("http://www.hefeipet.com/client/chongwuzhishi/shenghuozatan/2012/0220/95.html");

BufferedImage image = new BufferedImage(panel.getWidth(),
panel.getHeight(), BufferedImage.TYPE_INT_ARGB);

// paint the editor onto the image
SwingUtilities.paintComponent(image.createGraphics(), panel,
new JPanel(), 0, 0, image.getWidth(), image.getHeight());
// save the image to file
ImageIO.write((RenderedImage) image, "png", new File("html.png"));
}
}



WebRenderer

收费的。

http://www.webrenderer.com/

下载包里有包含很多例子, 效果类似在swing 中使用browser的功能


总结

不管是哪一种,多于样式复杂的页面,

产生的效果都不尽如人意。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: