Python 图片转字符画(实验楼项目)

刚刚自学python不久,发现实验楼上的python项目还蛮有趣的,决定开始尝试尝试

  • 实验楼连接
    https://www.shiyanlou.com/courses/370/labs/1191/document
from PIL import Image
import argparse

'''
参数处理
'''
# 实例化argparse 对象
parse = argparse.ArgumentParser()
# 输入图片
parse.add_argument('file')
# 输出图片
parse.add_argument('-o', '--output')
# 输出图片 宽, 高
parse.add_argument('--width', type = int, default = 80)
parse.add_argument('--height', type = int, default = 80)
# 把参数列出来
arg = parse.parse_args()

# 用来代替颜色的字符
char_list = list('!"#$%&\'()*+-./0123Q567890:;<=>?@ABCDEFGHIJKLMNOP@RSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|} ')

'''
RGB转灰度
gray = 0.2126r + 0.7152g + 0.0722 b
'''
def rgb_gray(r, g, b, alpha = 255):
    if alpha == 0:
        return ' '
    else :
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
        x = int(gray * len(char_list) / 256)
        # print(x)
        return char_list[x]
        # len(char_list) / alpha =

#
Img , Output , Width , Height = (arg.file , arg.output ,  arg.width, arg.height)
# print(Img, Output, Width, Height)

'''
对输入图片进行处理
'''
#
im = Image.open(Img)
# print(im.size)
# 重新定义图片大小
im = im.resize((Width, Height), Image.NEAREST)

txt = ''
for j in range(Height):
    for i in range(Width):
        txt += rgb_gray(*im.getpixel((i, j)))
    txt += '\n'

# 输出到屏幕
print(txt)

# 保存到文件
if Output:
    with open(Output, 'w') as f :
        f.write(txt)
else :
    with open("output.txt", 'w') as f:
       f.write(txt)

突然发现没有IDE,根本写不了代码 < ^ _

你可能感兴趣的:(Python 图片转字符画(实验楼项目))