码神镇楼
准备阶段
首先需要安装一个Python的图形处理库。终端直接输入:
brew install Pillow
实现阶段
不多说,直接上打码。
from PIL import Image # 导入Pillow的Image模块IMG = "/Users/##########/avart.jpg" # 需要处理掉的图片路径filePath = "/##############/avart.txt" # 处理结果的保存路径ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")height = 45width = 100# 重点。将256灰度映射到70个字符上def get_char(r, g, b, alpha=256): if alpha == 0: return ' ' length = len(ascii_char) gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 灰度转换公式,🉑以自己 unit = (256.0 + 1) / length # 比例 inext = int(gray / unit) # 根据灰度求对应的index return ascii_char[inext]if __name__ == '__main__': im = Image.open(IMG) # 读取图片 im = im.resize((width, height), Image.NEAREST) # 调整图片的大小 txt = "" for i in range(height): # 遍历图片的像素点,获取每一个像素点的rgbA值 for j in range(width): txt += get_char(*im.getpixel((j, i))) # 获得相应位置像素点的值组元(a,g,b,a) txt += '\n' # 换行 print txt # 字符图输出到文件 with open(filePath, 'w') as f: # 输出到指定文件 f.write(txt)
好了,就是这么一点码。很简单吧。
下面看看效果图:
源图
效果图
觉得还不错的话,就拜托点个赞,加个关注哦!😊