преобразовать HTML в изображение в байтовом массиве Java - PullRequest
7 голосов
/ 14 декабря 2010

Как я могу легко преобразовать HTML в изображение, а затем в байтовый массив, не создавая его

спасибо

Ответы [ 4 ]

13 голосов
/ 14 декабря 2010

Если у вас нет сложного html, вы можете отобразить его, используя обычный JLabel.Код ниже создаст это изображение:

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

alt text

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"));
4 голосов
/ 18 августа 2011

Я думаю, вы можете использовать библиотеку

html2image-0.9.jar

, вы можете скачать эту библиотеку на этой странице: http://code.google.com/p/java-html2image/

3 голосов
/ 27 ноября 2012

Как насчет использования в памяти ByteArrayStream вместо FileOutputStream в приведенном выше коде?Это был бы байтовый массив, по крайней мере ...

0 голосов
/ 14 декабря 2010

Это нетривиально, потому что рендеринг 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();
}
...