使用 Rust 实现 ASCII Art【图片转文本】

前言

ASCII Art 按字面意思即“ASCII 艺术”,又称“字符画”,主要是指通过计算机字符(主要是 ASCII)来表达图片。可能很多人觉得对于现在的计算机而言,真的需要这种东西吗?确实,实现它更多时候只是在创造一个“玩具”,其过程可以让新人对图片处理有一个入门级接触。

不过在一些为终端(Terminal)打造的软件项目中,利用 ASCII Art 已经不是件新鲜事了。要说它毫无作用,纯粹好玩,其实也不是那么回事。

例如 Linux 上用来输出发行版信息的 screenfetch 程序

                          ./+o+-       hentioe@CL-BUDGIE
                  yyyyy- -yyyyyy+      OS: Ubuntu 18.04 bionic
               ://+//////-yyyyyyo      Kernel: x86_64 Linux 4.15.0-34-generic
           .++ .:/++++++/-.+sss/`      Uptime: 1h 6m
         .:++o:  /++++++++/:--:/-      Packages: 2794
        o:+o+:++.`..```.-/oo+++++/     Shell: bash
       .:+o:+o/.          `+sssoo+/    Resolution: 2560x1440
  .++/+:+oo+o:`             /sssooo.   DE: Budgie
 /+++//+:`oo+o               /::--:.   WM: BudgieWM
 \+/+o+++`o++o               ++////.   WM Theme: Adapta
  .++.o+++oo+:`             /dddhhh.   GTK Theme: Adapta [GTK2/3]
       .+.o+oo:.          `oddhhhh+    Icon Theme: Papirus-Adapta-Nokto
        \+.++o+o``-````.:ohdhhhhh+     Font: Noto Sans 11
         `:o+++ `ohhhhhhhhyo++os:      CPU: Intel Core i7-6700K @ 8x 4.2GHz [27.8°C]
           .o:`.syhhhhhhh/.oo++o`      GPU: GeForce GTX 1070
               /osyyyyyyo++ooo+++/     RAM: 4280MiB / 15980MiB
                   ````` +oo+++o\:    
                          `oo++.      

(它用 ASCII Art 打印了一个 Ubuntu 的 LOGO)

原理

待更新……