开发者

如何用Python将图片转为字符画

开发者 https://www.devze.com 2023-03-24 09:30 出处:网络 作者: GSGundam
目录今天打算玩个好玩的,也是基于一个优秀python的图像处理库——PIL,使用ascii字符把图片转为黑白字符画。开发者_Python开发
目录

    今天打算玩个好玩的,也是基于一个优秀python的图像处理库——PIL,使用ascii字符把图片转为黑白字符画。

    开发者_Python开发

    首先有个问题,就是模拟灰度,这里有个公www.devze.com式:

    1
    Gray = 0.2126  R + 0.7152  G + 0.0722  B

    这样就好办了。当然,RGB模式下,256x256x256的颜色范围虽然被转换成了256的灰度范围,字符还是不好一一对应。我们可以使用一个字符对应多个灰度的方式来解决。

    记得要先安装PIL库,其中:

    如果是python 2,运行 pip install PIL

    如果是Python 3,运行 pip install pillow

    接下来直接上代码吧:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    from PIL import Image
    #设置显示的字符集
    ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")    
    WIDTH = 130
    HEIGHT = 50
    def get_char(r,g,b,alpha = 256):
        if alpha == 0:
            return ' '
        length = len(ascii_char)
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
        unit = (255.0 + 1)/length
        return ascii_char[int(gray/unit)]
    if __name__ == '__main__':
        img = "E:/WindowsDocumentjavascripts/G7/Desktop/1.png"
        im = Image.open(img)
        im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
        txt = ""
        for i in range(HEIGHT):
            for j in range(WIDTH):
                txt += get_char(*im.getpixel((j,i)))
            txt += '\n'
        print(txt)

    如果想要输出到文件,可以在定义的部分,加上想要保存的文件名 OUTPUT 编程= 'output.txt',然后在最后写进去:

    1
    2
    with open(OUTPUT, 'w') as f:
        f.write(txt)

    最后,编程我们得到了这个:

    如何用Python将图片转为字符画

    以上就是用Python将图片转为字符画的详细方法,更多与Python的相关内容请关注我们其它相关文章!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号