首先读入图片并转化为灰度图像,然后缩小图片,因为你命令行显示空间有限。。。 然后将像素分成7类,这里直接使用除法进行分类。(你要是不嫌麻烦也可以聚类。。) 最后拼接字符串进行输出就行了。 字体背景前景色有这么些:
字体色 | 字背景色 | 颜色描述 ------------------------------------------ 30 | 40 | 黑色 31 | 41 | 红色 32 | 42 | 绿色 33 | 43 | 黃色 34 | 44 | 蓝色 35 | 45 | 紫红色 36 | 46 | 青蓝色 37 | 47 | 白色 -------------------------------------------
import sys from PIL import Image import numpy as np import os def main(file): img = np.array(Image.open(file).convert('L'), 'f') #img1=np.zeros(shape=[51,51]) img1=img[0:img.shape[0]:5,0:img.shape[1]:5] img1=img1//37 for i in range(51): str = "echo " for j in range(51): if img1[i,j]==0: str=str+'\x1b[41;31m ' elif img1[i,j]==1: str=str+'\x1b[42;31m ' elif img1[i,j]==2: str=str+'\x1b[43;31m ' elif img1[i,j]==3: str=str+'\x1b[44;31m ' elif img1[i,j]==4: str=str+'\x1b[45;31m ' elif img1[i,j]==5: str=str+'\x1b[46;31m ' elif img1[i, j] == 6: str = str + '\x1b[47;31m ' str = str + '\x1b[0m' os.system(str) if __name__=="__main__": file=sys.argv[1] main(file)
原图如下:
效果图如下: