【问题标题】:Generate an ASCII picture from a string [closed]从字符串生成 ASCII 图片 [关闭]
【发布时间】:2011-10-29 06:19:25
【问题描述】:

我想制作一个程序,用户输入他们的姓名,程序会生成他们姓名的 ASCII 图片。是否可以在不使用 3rd 方工具的情况下做到这一点?我想出的是手动创建字母表中的每个字母,然后将字符串转换为 char 数组。然后返回与字母对应的每个图像。有没有更好或更有效的方法来做到这一点?

【问题讨论】:

    标签: java string ascii-art


    【解决方案1】:

    您可以使用任何您想要的字体将文本写入位图,然后扫描位图以生成 ASCII 艺术作品。您甚至可以使用抗锯齿效果。 ;)


    我最后一次这样做是在大约十年前。 ;)

    BufferedImage image = new BufferedImage(144, 32, BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setFont(new Font("Dialog", Font.PLAIN, 24));
    Graphics2D graphics = (Graphics2D) g;
    graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
            RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    graphics.drawString("Hello World!", 6, 24);
    ImageIO.write(image, "png", new File("text.png"));
    
    for (int y = 0; y < 32; y++) {
        StringBuilder sb = new StringBuilder();
        for (int x = 0; x < 144; x++)
            sb.append(image.getRGB(x, y) == -16777216 ? " " : image.getRGB(x, y) == -1 ? "#" : "*");
        if (sb.toString().trim().isEmpty()) continue;
        System.out.println(sb);
    }
    

    写出一张图片

    和打印

        ##         ##                 ##    ##                      *#*      *##**      *#*                       ##            ##     ##       
        ##         ##                 ##    ##                      *#*      *###*      *#*                       ##            ##     ##       
        ##         ##                 ##    ##                      *#*      *#*#*      *#*                       ##            ##     ##       
        ##         ##                 ##    ##                      *#*     *******     *#*                       ##            ##     ##       
        ##         ##     *******     ##    ##     *******           *#*    *#* *#*    *#*    *******     ##****  ##     ****** ##     ##       
        ##         ##    **#####**    ##    ##    **#####**          *#*    *#* *#*    *#*   **#####**    ##*##*  ##    **#####*##     ##       
        ##         ##   **#*****#**   ##    ##   **#** **#**         *#*   **#* *#*    *#*  **#** **#**   ##****  ##   **#** ***##     ##       
        #############   *#*     *#*   ##    ##   *#*     *#*         *#*   *#*   *#*   *#*  *#*     *#*   ##*     ##   *#*     *##     ##       
        #############   *#*     *#*   ##    ##   *#*     *#*         ****  *#*   *#*  ****  *#*     *#*   ##*     ##   *#*     *##     ##       
        ##         ##   *#########*   ##    ##   *#*     *#*          *#*  *#*   *#*  *#*   *#*     *#*   ##      ##   *#*     *##     ##       
        ##         ##   *#########*   ##    ##   *#       #*          *#* *#*     *#* *#*   *#       #*   ##      ##   *#       ##     ##       
        ##         ##   *#*           ##    ##   *#*     *#*          *#* *#*     *#* *#*   *#*     *#*   ##      ##   *#*     *##     ##       
        ##         ##   *#*           ##    ##   *#*     *#*          *****#*     *#*****   *#*     *#*   ##      ##   *#*     *##     ##       
        ##         ##   *#*     *#*   ##    ##   *#*     *#*           *#*#*       *#*#*    *#*     *#*   ##      ##   *#*     *##              
        ##         ##   **#** *****   ##    ##   **#** **#**           *#*#*       *#*#*    **#** **#**   ##      ##   **#** ***##              
        ##         ##    **######*    ##    ##    **#####**            *###*       *###*     **#####**    ##      ##    **#####*##     ##       
        ##         ##     *******     ##    ##     *******             *##**       **##*      *******     ##      ##     ****** ##     ##    
    

    改为粗体

        ###       ###                 ###    ###                        *##*     *###*     *##*                          ###            ###    #
        ###       ###                 ###    ###                        *##*     *###*     *##*                          ###            ###    #
        ###       ###                 ###    ###                        *##*     *###*     *##*                          ###            ###    #
        ###       ###                 ###    ###                        **##*   **###**   *##**                          ###            ###    #
        ###       ###     *******     ###    ###      *******            *##*   *##*##*   *##*     *******      ###****  ###     ****** ###    *
        ###       ###    **#####**    ###    ###    **#######**          *##*   *##*##*   *##*   **#######**    ###*##*  ###    **#####*###    *
        ###       ###   **#######**   ###    ###    *#########*          *##**  *#* *#*  **#**   *#########*    #####**  ###   **##########    *
        #############   *##** **##*   ###    ###   *###** **###*          *##* *##* *##* *##*   *###** **###*   ###**    ###   *##******###    *
        #############   *##*   *##*   ###    ###   *##*     *##*          *##* *##* *##* *##*   *##*     *##*   ###*     ###   *##*    *###    *
        #############   *#########*   ###    ###   *##*     *##*          *##* *##* **#* *##*   *##*     *##*   ###*     ###   *##*    *###    *
        ###       ###   *#########*   ###    ###   ###       ##*           *##*##*   *#**##*    ###       ##*   ###*     ###   *##      ###    *
        ###       ###   *##*          ###    ###   *##*     *##*           *##*##*   *##*##*    *##*     *##*   ###      ###   *##*    *###    *
        ###       ###   *##*          ###    ###   *##*     *##*           *#####*   *#####*    *##*     *##*   ###      ###   *##*    *###    *
        ###       ###   *##*****##*   ###    ###   *###** **###*           **###**    *###**    *###** **###*   ###      ###   *##******###     
        ###       ###   **########*   ###    ###    *#########*             *###*     *###*      *#########*    ###      ###   **##########    #
        ###       ###    **######*    ###    ###    **#######**             *###*     *###*      **#######**    ###      ###    **#####*###    #
        ###       ###     *******     ###    ###      *******               *###*     *###*        *******      ###      ###     *******###    #
    

    斜体

          *#*        *#*                *#*   *#*                      *#*       *##*      **#*                      *#*          *#*  *#*      
          *#*        *#*                *#*   *#*                      *#*      *###*      *#*                       *#*          *#*  *#*      
          *#*        *#*                *#*   *#*                      *#*      *###*     **#*                       *#*          *#*  *#*      
          *#*        *#*                *#*   *#*                      *#*     *#**#*     *#*                        *#*          *#*  *#*      
         ****       *#*    *******     ****  ****   *******            *#*     *#**#*    ****   *******    *#* **#* ****   ********#*  *#*      
         *#*        *#*   **######*    *#*   *#*   **######*           *#*    *#***#*    *#*   **######*   *#**###* *#*   **####**#**  **       
         *#*        *#*  **#******#*   *#*   *#*  **#******#*          *#*   **#* *#*   ****  **#******#*  *#****   *#*  *##** **##*  *#*       
         *############* **#*     *#*   *#*   *#* **#*     *#*          *#*   *#*  *#*   *#*  **#*     *#*  *#**     *#* **#*    **#*  *#*       
        **###########** *#*       #*  ****  **** *#*      *#*          *#*  **#*  *#*  ****  *#*      *#* **#*     **** *#*      *#*  *#*       
        *#*        *#*  *##########*  *#*   *#*  *#*       #*          *#*  *#*   *#*  *#*   *#*       #* *#**     *#*  *#*      *#*  **        
        *#*        *#*  *##########*  *#*   *#*  *#*      *#*          *#* ****   *#* *#**   *#*      *#* *#*      *#*  *#*      *#*  **        
        *#*        *#*  *#            *#*   *#*  *#       *#*          *#* *#*    *#* *#*    *#       *#* *#*      *#*  *#      ***   **        
        *#*        *#*  *#*           *#*   *#*  *#*     **#*          *#**#**    *#**#**    *#*     **#* *#*      *#*  *#*     *#*   **        
       *#*        *#*   *#*     **** *#*   *#*   *#*     *#**          *#**#*     *#**#*     *#*     *#***#*      *#*   *#*    **#*             
       *#*        *#*   *#*******#*  *#*   *#*   *#*** **##*           *###**     *###**     *#*** **##* *#*      *#*   *#******##*             
       *#*        *#*    *######**   *#*   *#*    *######**            *###*      *###*       *######**  *#*      *#*   **#####**#*  *#*        
       *#*        *#*     *******    *#*   *#*     *******              ##*       *##*         *******   *#*      *#*    ********#*  *#*        
    

    将字体更改为 SERIF BOLD

       #######   #######             ####   ####                   *######* *######*   ####*                       ####         ####    ***     
        *###*     *###*              *###   *###                    **##**   **##**    ****                        *###         *###    *#*     
         ###       ###                ###    ###                     *##**    **##*     **                          ###          ###    *#*     
         ###       ###                ###    ###                      *##*     *##*    ***                          ###          ###    *#*     
         ###       ###                ###    ###                      *##*     **#**   **                           ###          ###    *#*     
         ###       ###      ******    ###    ###     ******           **##*   ***##*   **     ******    #### ****   ###     *****###    *#*     
         ###       ###     *#***#**   ###    ###    *#****#*           *##*   ***##*   **    *#****#*   *###*###*   ###    *#****###    *#*     
         #############    *##* *##*   ###    ###   *##*  *##*          *##*   ****#** **    *##*  *##*   ###*****   ###   *##*  *###    *#*     
         ###       ###    *##   ##*   ###    ###   *##*  *##*           *##* **  *##* **    *##*  *##*   ###*       ###   *##*   ###    *#*     
         ###       ###    *#######*   ###    ###   *##    ##*           *##* **  *##* **    *##    ##*   ###*       ###   *##    ###    *#*     
         ###       ###    *##*        ###    ###   *##    ##*           *##***   **##**     *##    ##*   ###        ###   *##    ###    *#      
         ###       ###    *##*        ###    ###   *##    ##*            *##**    *##**     *##    ##*   ###        ###   *##    ###            
         ###       ###    *##*   **   ###    ###   *##*  *##*            *##**    *###*     *##*  *##*   ###        ###   *##*   ###            
         ###       ###    *##** ***   ###    ###   *##*  *##*            **#*      *#*      *##*  *##*   ###        ###   *##*  *###*   ***     
        *###*     *###*    *#####*   *###*  *###*   *#****#*              *#*      *#*       *#****#*   *###*      *###*  **#****####   *#*     
       #######   #######   ******    #####  #####    ******               ***      *#*        ******    #####      #####   **********   ***     
    

    【讨论】:

      【解决方案2】:

      这个问题分四步解决。

      1. 为您打算支持的每个字母创建一个 ascii 艺术表示(作为二维矩形阵列)。也许这些是从资源文件中加载的。
      2. 将输入字符串解析为字符标记并获取这些字符的艺术。
      3. 制作一个矩形数组,其高度与最高标记一样高,宽度与每个标记的宽度之和一样宽(如果图像本身不包含字符之间的空间,则加上字符之间的空间)。
      4. 将每一个复制到巨型阵列中的正确位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 2017-04-21
        相关资源
        最近更新 更多