我知乎上看到 怎么用 Python 把图片转化为字符? 挺有趣的,自己也尝试了一下,当然他也是参考 这里。
原理就是:将图片(位图)转化成灰度图,即 0~255 的数值,然后将这些数值换成特殊符号(自定义)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
from PIL import Image chars = ['z', 'l', 'y', '#', '?', '*', '+', ';', ':', ',', '.']
def resize(image, newW): (w, h) = image.size newDim = (newW, int(0.58*h*newW/w)) newImg = image.resize(newDim) return newImg
def garytochar(grayImg,newW): newPix = [];step=256//len(chars) + 1 for i,data in enumerate(grayImg.getdata()): if(i%newW == 0): newPix.append('\n') newPix.append(chars[data//step]) return ''.join(newPix)
def imagetochar(imgPath, newW = 78): img = Image.open(imgPath) newImg = resize(img,newW) grayImg = newImg.convert('L') return garytochar(grayImg,newW)
if __name__ == '__main__': import sys imgPath, newW, *tmp = sys.argv[1:3]+ [78] charPix = imagetochar(imgPath,int(newW)) print(charPix)
|
效果图
原始图片 |
字符图片 |
 |
 |