用Java进行ASCII艺术

我想解码日志并试验,这是备忘录。
我将字符转换为ASCII艺术。
这全部都可以用Java的标准库来实现。
【参考】https://www.baeldung.com/ascii-art-in-java
※根据上述示例,我适当地修改了一些不能正常工作的部分。

创建班级

import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class ASCIIService {

    /**
     * アスキーアートを作るメソッド.
     * @param str アスキーアートにしたい文字
     * @return StringBuilder アスキーアートになった文字
     */
    public static StringBuilder createAscii(String str) {

        // 生成するグラフィックのサイズ
        int height =30;
        int width = 200;
        // 描写開始位置
        int startX = 2;
        int stratY = 20;
        // フォントを設定
        Font font = new Font("Arial", Font.BOLD, 14);
        StringBuilder sysout = new StringBuilder("\n");

        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = bufferedImage.getGraphics();

        // テキストをgraphicに変換
        Graphics2D g = (Graphics2D) graphics;
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g.setFont(font);
        g.drawString(str, startX, stratY);

        // graphicをもとにしてアスキーアートに書き起こし
        for (int y = 0; y < height; y++) {
            StringBuilder stringBuilder = new StringBuilder();

            for (int x = 0; x < width; x++) {
                stringBuilder.append(bufferedImage.getRGB(x, y) == -16777216 ? " " : "@");
            }
            if (stringBuilder.toString().trim().isEmpty()) {
                continue;
            }
            sysout.append("\n" + stringBuilder);
        }
        sysout.append("\n");
        return sysout;
    }

    public static void main(String[] args) {
        // 実行
        System.out.println(createAscii("PROCESS START!"));
    }
}

2. 进行

image.png

只有在通畅路径下才能执行命令。

image.png

备考。希望能更简单些。

image.png
广告
将在 10 秒后关闭
bannerAds