优草派  >   Python

Python怎么绘制字符画?Python图像转字符画详解教程

罗西汉            来源:优草派

字符画指的就是使用不同字符组合来形成图像样式,在这个过程之中字符本身的笔画以及字符之间的间隔就是字符画绘制的关键。下面这篇文章就是会来详细讲解,在python中该怎么将图像转为字符画形式,感兴趣和想学习的小伙伴就要仔细往下阅读了。

Python怎么绘制字符画?Python图像转字符画详解教程

1.python中绘制字符画只需要去调用PIL第三方库之中Image模块即可,导入模块之后首先需要定义一个列表结构来保存绘制字符画时所需要的字符。该列表中保存的字符可以根据自己的需求和喜好随意添加,代码示例如下所示:

from PIL import Image
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

2.然后就是要去定义将图片转为灰度图,然后返回这个像素点灰度该对应哪个字符。在函数内首先需要获取字符集列表长度,然后使用计算表达式得出图像灰度值,再用255除以列表长度即可得到灰度值可以映射的字符数值。之后就是用灰度值除以该映射值从而得到这个像素点所对应的字符是什么,它需要用切片方式写在字符集中括号内,代码如下:

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)]

3.最后要做的事情就是在if等于main的条件判断语句块之中先将图片导入进来,然后修改它的高度和宽度。再使用嵌套for循环遍历该图像的每一个像素点并获取颜色,之后通过该值调用get_char()函数取出对应的字符,之后将这些字符添加到变量中输出即可,详细代码如下所示:

if __name__ == '__main__':
   im = Image.open('IMG.jpg')
   im = im.resize((150,80), Image.NEAREST)
   txt = ""
   for i in range(HEIGHT):
       for j in range(WIDTH):
           txt += get_char(*im.getpixel((j, i)))
       txt += '\n'
   print(txt)
   with open(’t.txt’, 'w') as f:
       f.write(txt)

以上就是关于“Python怎么绘制字符画?Python图像转字符画详解教程”的全部内容了,希望对你有所帮助。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。