python 将图片转换为字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/okm6666/article/details/78646428

通过PIL库进行操作,将图片中每个像素与字符集中的元素进行一一对应,实现将图片转换为字符串的效果。实现后的效果:
这里写图片描述
这里写图片描述

首先导入Image模块,用于对图像进行操作,并创建字符库用于替换,从字符的密集进行排序

from PIL import Image
#创建用于替换的字符集
chs = list('''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,. ''')

创建通过获取像素的RGB值后进行与字符间转换的方法,在透明时返回空格进行填充,再将其他参数进行转换,按照转换后的比值确定替换字符的密集程度。

def get_char(r, g, b, alpha=256):
    if alpha == 0:
        return ' '
    length = len(chs)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = 256 / length
    return chs[(int)(gray / unit)]*2

通过打开图片重新设置图片大小,进行遍历获取RGB值,通过字符串不断添加RGB值转换后的字符。最后将字符串写入文件中。getpixel方法的参数按照以图片左上角为原点,向左为X轴正方向,向下为Y轴正方向进行设置。

txt = ''

with Image.open("1.jpg") as im:
    im = im.resize((60, 60), Image.NEAREST) #第二个参数为缩放图片的质量
    width, height = im.size
    for i in range(height):
        for j in range(width):
            txt += get_char(*im.getpixel((j, i)))
        txt += '\n'

with open('wm.txt' ,'w') as t:
    t.write(txt)

猜你喜欢

转载自blog.csdn.net/okm6666/article/details/78646428