将html转换为字节数组java中的图像

Posted

技术标签:

【中文标题】将html转换为字节数组java中的图像【英文标题】:convert html to image in byte array java 【发布时间】:2011-05-25 04:20:18 【问题描述】:

如何在不创建的情况下轻松地将 html 转换为图像,然后转换为字节数组

谢谢

【问题讨论】:

像呈现的 html 页面的“屏幕截图”? 不,我创建了html,我需要通过传真发送没有图片源的图片,所以我想把它转换成图片然后发送图片 【参考方案1】:

这很重要,因为渲染 HTML 页面可能非常复杂:您需要评估文本、图像、CSS,甚至可能是 javascript

我不知道答案,但我确实有一些东西可以帮助你:iText(一个 PDF 写作库)的代码,用于将 HTML 页面转换为 PDF 文件。

public static final void convert(final File xhtmlFile, final File pdfFile) throws IOException, DocumentException

    final String xhtmlUrl = xhtmlFile.toURI().toURL().toString();
    final OutputStream reportPdfStream = new FileOutputStream(pdfFile);
    final ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(xhtmlUrl);
    renderer.layout();
    renderer.createPDF(reportPdfStream);
    reportPdfStream.close();

【讨论】:

我需要将它保存在字节数组中,而不是创建它。谢谢【参考方案2】:

如果您没有任何复杂的 html,您可以使用普通的 JLabel 来呈现它。下面的代码将产生这个图像:

<html>
  <h1>:)</h1>
  Hello World!<br>
  <img src="http://img0.gmodules.com/ig/images/igoogle_logo_sm.png">
</html>

public static void main(String... args) throws IOException 

    String html = "<html>" +
            "<h1>:)</h1>" +
            "Hello World!<br>" +
            "<img src=\"http://img0.gmodules.com/ig/images/igoogle_logo_sm.png\">" +
            "</html>";

    JLabel label = new JLabel(html);
    label.setSize(200, 120);

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

    
        // paint the html to an image
        Graphics g = image.getGraphics();
        g.setColor(Color.BLACK);
        label.paint(g);
        g.dispose();
    

    // get the byte array of the image (as jpeg)
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", baos);
    byte[] bytes = baos.toByteArray();

    ....

如果您只想将其写入文件:

    ImageIO.write(image, "png", new File("test.png"));

【讨论】:

我不需要创建它只是为了将它保存为字节数组 您必须通过ImageIO.write 之类的操作。如果没有图像,就无法神奇地构造字节数组。 什么意思——字节数组形式? 当您将BufferedImage 转换为byte[] 时,您需要知道应如何将数据打包到数组中。格式有很多bmpjpggif 我想从 html 创建图像(当我创建它时,我有图像源。因此我想用图像转换为图像)【参考方案3】:

我认为你可以使用这个库

html2image-0.9.jar

你可以在这个页面下载这个库:http://code.google.com/p/java-html2image/

【讨论】:

【参考方案4】:

在上面的代码中使用内存中的ByteArrayStream 而不是FileOutputStream 怎么样?那将是一个字节数组,至少......

【讨论】:

以上是关于将html转换为字节数组java中的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何将从 C++ 发送的 cv::MAT 字节数组转换为 Java 中的位图?

如何将字节数组中的图像文件数据转换为位图?

将图像控件转换为字节数组 Asp.Net

将字节转换为位

如何将base64位的字节数组转换成图片并显示

将 PIL 图像转换为字节数组?