美文网首页
把图片转换为字符显示的python小程序

把图片转换为字符显示的python小程序

作者: 我有一口小白牙 | 来源:发表于2017-10-10 09:53 被阅读117次

    先上图:

    李白哥哥...

    让后下面贴上代码....

     # 1, 导入Image类
    from PIL import Image
    
    
    # 根据像素点的颜色值获取字符的函数
    def get_chars(pi):
        # 用字符去替换像素点的颜色值
        for k in range(0, 8):
            if pi < (k + 1) * 32:
                return chars[7 - k]
    
    # 保存文件的函数
    def save(image_name, data):
        f = open(image_name + '.txt', 'w')
    
        for d in data:
            print(d, file=f)
    
        f.close()
    
    # 加了这个如果是需要import这个类的话, 会直接调用这段代码...
    if __name__ == '__main__':
    
        # 2, 使用Image的对象读取图片
        image_name = '/Users/baiya/Desktop/timg.jpeg'
        img = Image.open(image_name)
        # 3, 将图片转换为灰度图像
        img = img.convert('L')
        # 4, 获取图片大小,并根据实际需要缩小图片
        w, h = img.size
        # 如果图片太大, 将高和宽做一个等比例的缩放
        if w > 100:
            h = int((100/w) * h/2)
            w = 100
        # 防止图片缩放的时候质量下降
        img = img.resize((w, h), Image.ANTIALIAS)
        # 5, 将缩小的图片像素点的颜色值转化为字符并存放到列表
        # 保存像素字符的列表
        data = []
        # 替换字符的列表(从左到右颜色是逐渐加深)
        chars = [' ', ',', '1', '+', 'n', 'D', '@', 'M']
    
        # 根据图片的宽度和高度便利像素点并取出每个像素点的颜色值
        for i in range(0, h):
            line = ''
            for j in range(0, w):
                # 取出像素点的值
                pi = img.getpixel((j,i))
                # 用字符去替换像素点的颜色值
                for k in range(0, 8):
                    if pi < (k+1) * 32:
                        line += get_chars(pi)
                        break
    
            data.append(line)
    
        # 6, 将保存的字符列表写入到文件中
        save(image_name, data)
    
    
        print('转换成功!')
    

    相关文章

      网友评论

          本文标题:把图片转换为字符显示的python小程序

          本文链接:https://www.haomeiwen.com/subject/ilkdextx.html