java - 在Java中将文本转换为图像

标签 java graphics2d cryptoapi

我正在用 Java 为可视化密码学项目编写代码。我们想为一个随机标记(字母数字字符串)创建两个共享图像,这样当两个图像重叠时,标记就会显示出来。 现在 - 甚至在视觉加密部分开始之前,我正试图想办法将这个字母数字标记转换为图像,但不知道从哪里开始。有什么建议么?谢谢!

最佳答案

public class TextToGraphicConverter {



  public static void main(String[] args) throws Exception {
        BufferedImage image = new TextToGraphicConverter().convertTextToGraphic("my text", new Font("Arial", Font.PLAIN, 18));
        //write BufferedImage to file
        ImageIO.write(image, "png", new File("path-to-file.png"));
    }

    public BufferedImage convertTextToGraphic(String text, Font font) {

        BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = img.createGraphics();

        g2d.setFont(font);
        FontMetrics fm = g2d.getFontMetrics();
        int width = fm.stringWidth(text);
        int height = fm.getHeight();
        g2d.dispose();

        img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

        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);
        g2d.setFont(font);
        fm = g2d.getFontMetrics();
        g2d.setColor(Color.BLACK);
        g2d.drawString(text, 0, fm.getAscent());
        g2d.dispose();
        return img;
    }
}

关于java - 在Java中将文本转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568114/

相关文章:

java - 绘图 : centering objects of different size

c - 如何使用自定义加密服务提供商 (CSP) 在 Chrome 上进行 SSL/TLS 客户端身份验证

java - Java Mission Control 的 MBean 浏览器中的颜色是什么?

java - 使用多个参数的 Spring Security 登录

java - 我正在尝试用 Java 多线程绘制 SRTM3-Tile - 我做错了什么?

visual-studio - 为什么重启后我的 key 容器会丢失?

javascript - 为什么这个解码/编码过程给出不同的缓冲区数组?

java - 将 TableView prefWidthProperty 绑定(bind)到其父容器的 prefWidthProperty 时出现问题

java - 字节数组(十六进制)转换为 Int 问题。 ( Kotlin /Java)

Java2D : Fill a convex rounded polygon (QuadCurves)