我想创建一个程序,用户输入他们的名字,程序会生成一个他们名字的ascii图片。是否可以在不使用第三方工具的情况下实现这一目标?我想到的是手动创建字母表中的每个字母,然后将字符串转换为char数组。然后返回与该字母对应的每个图像。有没有更好或更有效的方法呢?
感谢。
答案 0 :(得分:39)
您可以使用任何所需的字体将文本写入位图,并扫描位图以生成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);
}
写出图像
并打印
## ## ## ## *#* *##** *#* ## ## ##
## ## ## ## *#* *###* *#* ## ## ##
## ## ## ## *#* *#*#* *#* ## ## ##
## ## ## ## *#* ******* *#* ## ## ##
## ## ******* ## ## ******* *#* *#* *#* *#* ******* ##**** ## ****** ## ##
## ## **#####** ## ## **#####** *#* *#* *#* *#* **#####** ##*##* ## **#####*## ##
## ## **#*****#** ## ## **#** **#** *#* **#* *#* *#* **#** **#** ##**** ## **#** ***## ##
############# *#* *#* ## ## *#* *#* *#* *#* *#* *#* *#* *#* ##* ## *#* *## ##
############# *#* *#* ## ## *#* *#* **** *#* *#* **** *#* *#* ##* ## *#* *## ##
## ## *#########* ## ## *#* *#* *#* *#* *#* *#* *#* *#* ## ## *#* *## ##
## ## *#########* ## ## *# #* *#* *#* *#* *#* *# #* ## ## *# ## ##
## ## *#* ## ## *#* *#* *#* *#* *#* *#* *#* *#* ## ## *#* *## ##
## ## *#* ## ## *#* *#* *****#* *#***** *#* *#* ## ## *#* *## ##
## ## *#* *#* ## ## *#* *#* *#*#* *#*#* *#* *#* ## ## *#* *##
## ## **#** ***** ## ## **#** **#** *#*#* *#*#* **#** **#** ## ## **#** ***##
## ## **######* ## ## **#####** *###* *###* **#####** ## ## **#####*## ##
## ## ******* ## ## ******* *##** **##* ******* ## ## ****** ## ##
更改为BOLD
### ### ### ### *##* *###* *##* ### ### #
### ### ### ### *##* *###* *##* ### ### #
### ### ### ### *##* *###* *##* ### ### #
### ### ### ### **##* **###** *##** ### ### #
### ### ******* ### ### ******* *##* *##*##* *##* ******* ###**** ### ****** ### *
### ### **#####** ### ### **#######** *##* *##*##* *##* **#######** ###*##* ### **#####*### *
### ### **#######** ### ### *#########* *##** *#* *#* **#** *#########* #####** ### **########## *
############# *##** **##* ### ### *###** **###* *##* *##* *##* *##* *###** **###* ###** ### *##******### *
############# *##* *##* ### ### *##* *##* *##* *##* *##* *##* *##* *##* ###* ### *##* *### *
############# *#########* ### ### *##* *##* *##* *##* **#* *##* *##* *##* ###* ### *##* *### *
### ### *#########* ### ### ### ##* *##*##* *#**##* ### ##* ###* ### *## ### *
### ### *##* ### ### *##* *##* *##*##* *##*##* *##* *##* ### ### *##* *### *
### ### *##* ### ### *##* *##* *#####* *#####* *##* *##* ### ### *##* *### *
### ### *##*****##* ### ### *###** **###* **###** *###** *###** **###* ### ### *##******###
### ### **########* ### ### *#########* *###* *###* *#########* ### ### **########## #
### ### **######* ### ### **#######** *###* *###* **#######** ### ### **#####*### #
### ### ******* ### ### ******* *###* *###* ******* ### ### *******### #
在ITALIC
*#* *#* *#* *#* *#* *##* **#* *#* *#* *#*
*#* *#* *#* *#* *#* *###* *#* *#* *#* *#*
*#* *#* *#* *#* *#* *###* **#* *#* *#* *#*
*#* *#* *#* *#* *#* *#**#* *#* *#* *#* *#*
**** *#* ******* **** **** ******* *#* *#**#* **** ******* *#* **#* **** ********#* *#*
*#* *#* **######* *#* *#* **######* *#* *#***#* *#* **######* *#**###* *#* **####**#** **
*#* *#* **#******#* *#* *#* **#******#* *#* **#* *#* **** **#******#* *#**** *#* *##** **##* *#*
*############* **#* *#* *#* *#* **#* *#* *#* *#* *#* *#* **#* *#* *#** *#* **#* **#* *#*
**###########** *#* #* **** **** *#* *#* *#* **#* *#* **** *#* *#* **#* **** *#* *#* *#*
*#* *#* *##########* *#* *#* *#* #* *#* *#* *#* *#* *#* #* *#** *#* *#* *#* **
*#* *#* *##########* *#* *#* *#* *#* *#* **** *#* *#** *#* *#* *#* *#* *#* *#* **
*#* *#* *# *#* *#* *# *#* *#* *#* *#* *#* *# *#* *#* *#* *# *** **
*#* *#* *#* *#* *#* *#* **#* *#**#** *#**#** *#* **#* *#* *#* *#* *#* **
*#* *#* *#* **** *#* *#* *#* *#** *#**#* *#**#* *#* *#***#* *#* *#* **#*
*#* *#* *#*******#* *#* *#* *#*** **##* *###** *###** *#*** **##* *#* *#* *#******##*
*#* *#* *######** *#* *#* *######** *###* *###* *######** *#* *#* **#####**#* *#*
*#* *#* ******* *#* *#* ******* ##* *##* ******* *#* *#* ********#* *#*
将字体更改为SERIF BOLD
####### ####### #### #### *######* *######* ####* #### #### ***
*###* *###* *### *### **##** **##** **** *### *### *#*
### ### ### ### *##** **##* ** ### ### *#*
### ### ### ### *##* *##* *** ### ### *#*
### ### ### ### *##* **#** ** ### ### *#*
### ### ****** ### ### ****** **##* ***##* ** ****** #### **** ### *****### *#*
### ### *#***#** ### ### *#****#* *##* ***##* ** *#****#* *###*###* ### *#****### *#*
############# *##* *##* ### ### *##* *##* *##* ****#** ** *##* *##* ###***** ### *##* *### *#*
### ### *## ##* ### ### *##* *##* *##* ** *##* ** *##* *##* ###* ### *##* ### *#*
### ### *#######* ### ### *## ##* *##* ** *##* ** *## ##* ###* ### *## ### *#*
### ### *##* ### ### *## ##* *##*** **##** *## ##* ### ### *## ### *#
### ### *##* ### ### *## ##* *##** *##** *## ##* ### ### *## ###
### ### *##* ** ### ### *##* *##* *##** *###* *##* *##* ### ### *##* ###
### ### *##** *** ### ### *##* *##* **#* *#* *##* *##* ### ### *##* *###* ***
*###* *###* *#####* *###* *###* *#****#* *#* *#* *#****#* *###* *###* **#****#### *#*
####### ####### ****** ##### ##### ****** *** *#* ****** ##### ##### ********** ***
答案 1 :(得分:2)
这个问题分四步解决。