如何用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)
最后,我们得到了这个:
来源: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