用Python代码画画

本文简单阐述使用Python代码将图片转数组,然后通过数组转对应深浅图片像素位置,最后在命令行输出一个用“乱码”打印出来的图片。
学习点:
1.读取图片
2.图片转灰度图
3.转numpy数组
4.两层for循环使用
5.对应数值引出index值
6.index值输出
7.使用index对应字符串下标并打印输出

from PIL import Image
import numpy as np
import os
 
def main(filepath):
    img = Image.open(filepath) #读取图片
    img =img.resize((70,40),Image.ANTIALIAS) #改变图片尺寸
    img_gray = img.convert("L")  #图片转灰度
    num_array = np.array(img_gray,'f') #f是 转数组的时候 以float 进行转换
    chars = '@#%&WMBdpqwmzc.......  ' #定义输出的字符

    for line in num_array: #第一级循环数,输出矩阵的每一行
        charline=[]
        for num in line: #第二级循环,输出每一行内的数字(像素值)
            index = (num/255)*(len(chars)-1) #num/255把每个值转小数(0-1),len(chars)计算字符串长度
            charline.append(chars[int(index)]) #将输出添加到列表中,并根据index从char取字符
        print ''.join(charline) #所有字符拼接,注意!!!这里是在第二级循环中。每一行输出就要打印
    pass

if __name__ == '__main__':
 
    main('图片')