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

作者:GSGundam 时间:2022-06-15 09:26:06 

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

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

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

接下来直接上代码吧:

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:/WindowsDocuments/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',然后在最后写进去:

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

最后,我们得到了这个:

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

来源:https://www.gsgundam.com/archive/2022-07-10-how-to-draw-image-ascii-python-pil/

标签:Python,字符画
0
投稿

猜你喜欢

  • python TCP Socket的粘包和分包的处理详解

    2021-06-14 16:49:50
  • tensorflow求导和梯度计算实例

    2023-08-09 14:07:38
  • python3.7 打包成exe程序方式(只需两行命令)

    2023-01-26 14:29:34
  • OpenCV 绘制同心圆的示例代码

    2021-05-19 16:49:40
  • js实时监听文本框状态的方法

    2024-04-25 13:10:58
  • python实现打印类的所有属性和方法

    2021-07-28 14:51:56
  • 基于mysql事务、视图、存储过程、触发器的应用分析

    2024-01-28 18:27:51
  • 教你如何在WordPress发布文章时自定义文章作者名称

    2023-11-12 07:47:11
  • Redis五种数据结构在JAVA中如何封装使用

    2024-01-12 16:51:37
  • Python 正则表达式详解

    2021-12-03 11:11:38
  • python的​PyPDF2实现pdf文件切割和合并

    2023-02-07 19:57:39
  • python 切换root 执行命令的方法

    2021-10-16 22:33:43
  • 解析:以mysql_开始的未定义引用错误

    2008-12-19 17:58:00
  • 在MySQL中使用更新日志文件

    2009-02-26 16:22:00
  • Django数据库(SQlite)基本入门使用教程

    2024-01-22 01:13:03
  • python基础之while循环语句的使用

    2021-03-16 16:54:20
  • 详解Vue的ref特性的使用

    2024-06-07 15:23:02
  • pandas值替换方法

    2021-05-31 20:22:38
  • 详解php中的类与对象(继承)

    2023-11-23 14:07:09
  • python sys,os,time模块的使用(包括时间格式的各种转换)

    2021-02-08 02:31:33
  • asp之家 网络编程 m.aspxhome.com