【问题标题】:JAVA: Convert HTML Code to image in transparentJAVA:将HTML代码转换为透明图像
【发布时间】:2016-02-12 05:41:07
【问题描述】:

如何将 HTML 代码转换为透明的 PNG 图片?

String s = "<font size="6">Schriftgröße 6</font>"

转换成透明图片?我该怎么做?

【问题讨论】:

  • 将 HTML 代码转换为透明的 PNG 图像到底是什么意思?有代码图片吗?
  • 是的,我想将字符串(我的 HTML 代码)转换为图像文件。所以更不用说代码的图像了。
  • 你可以从this之类的东西开始
  • 好的,但是我会从 HTML 中获取真正的代码吗?我想要 HTML 翻译中的代码,但我想我只会得到这个代码 Schriftgröße 6
  • 类似于这个库:code.google.com/p/java-html2image/downloads/… 但我无法在这个库中将其转换为透明图像?

标签: java html image png transparent


【解决方案1】:

核心问题是,html 文本渲染器的方式深埋在核心 API 中。一直懒得四处寻找,我会作弊并简单地使用JLabel,例如...

JLabel label = new JLabel("<html><font size=\"6\">Schriftgröße 6</font></html>");
label.setSize(label.getPreferredSize());

BufferedImage img = new BufferedImage(label.getPreferredSize().width, label.getPreferredSize().height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
label.printAll(g2d);
g2d.dispose();
try {
    ImageIO.write(img, "png", new File("Text.png"));
} catch (IOException ex) {
    ex.printStackTrace();
}

如果您想使用html2image API,您需要更改它使用的渲染表面的生成方式。

API 基本上使用JEditorPane,这实际上是一个不错的技巧,问题是,您需要使其透明,可能类似于...

HtmlImageGenerator imageGenerator = new HtmlImageGenerator() {
    protected JEditorPane createJEditorPane() {
        JEditorPane editor = super.createJEditorPane();
        editor.setOpaque(false);
        return editor;
    }

};
imageGenerator.loadHtml("<font size=\"6\">Schriftgröße 6</font>");
imageGenerator.saveAsImage("hello-world.png");

哪些输出...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多