将 HTML 转换为图像(通过自动调整大小的 JEditorPane)

Posted

技术标签:

【中文标题】将 HTML 转换为图像(通过自动调整大小的 JEditorPane)【英文标题】:Converting HTML to image (via autosized JEditorPane) 【发布时间】:2020-06-17 20:28:11 【问题描述】:

html 元素转换为图像(例如 PNG)的机制是通过 JEditorPane“渲染”它,如下所示:

public void render(String html, int width, int height, file output) 
  JEditorPane jep = new JEditorPane("text/html", html);
  jep.setSize(width, height);
  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  jep.print(image.getGraphics());
  ImageIO.write(image, "PNG", output);

这种方法适用于简单的 HTML 代码,包括对 CSS 的基本支持。

有没有办法“自动检测”宽度和高度,而不是在render() 方法中明确指定?

或者通过“普通香草”Java 将 HTML 转换为图像的更好方法?

【问题讨论】:

【参考方案1】:

大多数 HTML 元素没有“默认”大小。大小由在该元素中找到的文本和显示该元素的屏幕宽度设置。

但是,如果您想以当前样式呈现在用户屏幕上的元素,您可能可以尝试获取根元素的宽度。

为此,尝试将 HTML 字符串转换为 DOM 元素 (Creating a new DOM element from an HTML string using built-in DOM methods or Prototype),然后获取根元素的宽度和高度。

【讨论】:

以上是关于将 HTML 转换为图像(通过自动调整大小的 JEditorPane)的主要内容,如果未能解决你的问题,请参考以下文章

上传前调整图像大小 - 将画布转换为文件对象

OpenCV:自动将窗口大小调整为显示的图像

基于 html、css、jquery 的拖放、调整大小、旋转应用程序:通过 php 将最终图像导出为 jpg

在 PHP 中调整图像大小

在不将单个像素值转换为浮点数的情况下调整目标分割图的大小

如何使用 GD 调整上传图像的大小并将其转换为 PNG?