这是一个有趣的java列子,先来看下效果吧:

                          $$$$    $$$$                  $$$$                                        
                          $$$$    $$$$                  $$$$                                        
                          $$$$    $$$$                  $$$$                                        
                                             $$$                                       $$           
           $$$$$$$$$$$$   $$$$    $$$$    $$$$$$$$$     $$$$    $$$$    $$$$    $$$$ $$$$$$         
           $$$$$$$$$$$$   $$$$    $$$$    $$$$$$$$$$    $$$$    $$$$    $$$$    $$$$$$$$$$$$        
           $$$$$$$$$$$$   $$$$    $$$$    $$$$$$$$$$    $$$$    $$$$    $$$$    $$$$$$$$$$$$        
                 $$$$$$   $$$$    $$$$    $     $$$$    $$$$    $$$$    $$$$    $$$$$$ $$$$$        
                $$$$$$    $$$$    $$$$          $$$$    $$$$    $$$$    $$$$    $$$$$   $$$$        
               $$$$$$     $$$$    $$$$     $$$$$$$$$    $$$$    $$$$    $$$$    $$$$    $$$$        
              $$$$$$      $$$$    $$$$    $$$$$$$$$$    $$$$    $$$$    $$$$    $$$$    $$$$        
             $$$$$$       $$$$    $$$$   $$$$$$$$$$$    $$$$    $$$$    $$$$    $$$$    $$$$        
            $$$$$$        $$$$    $$$$   $$$$   $$$$    $$$$    $$$$   $$$$$    $$$$    $$$$        
            $$$$$         $$$$    $$$$  $$$$$   $$$$    $$$$    $$$$  $$$$$$    $$$$    $$$$        
           $$$$$$$$$$$$   $$$$    $$$$   $$$$$$$$$$$$   $$$$    $$$$$$$$$$$$    $$$$    $$$$        
           $$$$$$$$$$$$   $$$$    $$$$   $$$$$$$$$$$$$  $$$$    $$$$$$$$$$$$    $$$$    $$$$        
           $$$$$$$$$$$$   $$$$    $$$$   $$$$$$$ $$$$$  $$$$    $$$$$$$ $$$$    $$$$    $$$$        
                          $$$$             $$$    $$$   $$$$      $$$                               
                          $$$$                          $$$$                                        
                     $$$$$$$$$                     $$$$$$$$$                                        
                     $$$$$$$$                      $$$$$$$$                                         
                     $$$$$$$                       $$$$$$$                                          

实现代码如下:

public class ASCIIArt {

  public static void main(String[] args) throws IOException {
		 
    int width = 100;
	int height = 30;
		 
    //BufferedImage image = ImageIO.read(new File("/users/zhujiajun/ascii-art.png"));
		    
	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	Graphics g = image.getGraphics();
	g.setFont(new Font("SansSerif", Font.BOLD, 24));
		 
	Graphics2D graphics = (Graphics2D) g;
    graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
						RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    graphics.drawString("zjiajun", 10, 20);
		 
	//save this image
	//ImageIO.write(image, "png", new File("/users/zhujiajun/ascii-art.png"));
		 
    for (int y = 0; y < height; y++) {
	    StringBuilder sb = new StringBuilder();
		for (int x = 0; x < width; x++) {
			sb.append(image.getRGB(x, y) == -16777216 ? " " : "$");
		}
		 
		if (sb.toString().trim().isEmpty()) {
			continue;
		}
		 
		System.out.println(sb);
	}
		 
  }
		 
}

-16777216这是什么玩意? 其实是颜色代码(256 * 256 * 256),在这个列子中”-16777216”被替换为空的字符串“ ”。可以读取保存的图片,并且打印出rgb color,会发现不同的颜色会有不同的代码。

英文原文链接

原创文章转载请注明出处: 用Java生成ASCII艺术字