python画字符画的实现原理
发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章主要讲解了"python画字符画的实现原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python画字符画的实现原理"吧!1.先看效果原图是
千家信息网最后更新 2024年09月23日python画字符画的实现原理
这篇文章主要讲解了"python画字符画的实现原理",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python画字符画的实现原理"吧!
1.先看效果
原图是
字符画
2.实现原理
其实原理非常简单,首先,要准备一个字符集
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
其次,要将图片转成灰度图,所谓灰度图就是黑白照片,这个过程中还要缩小图片,每张图片缩小的比例都不尽相同,要根据图片的实际情况来决定,这样就得到了一张缩小后的黑白照片
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
im.save('t.jpeg') # 保存图片只是为了演示黑白照片
看起来有一些丑陋,这张黑白照片一共有80*50个像素,每个像素点都可以通过im.getpixel方法获得灰度值,这个值的范围是从0到255,0是黑色,255是白素,中间就是从黑到白的灰色。
接下来要做的事情就是把4000个灰度值转成字符
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
灰度值大于240的,我都转成空字符串,这样看着舒服,其余的,按比例映射到字符集上。
强调一点,生成的txt文件不要打开查看,那样你看不到一个完整的字符画,在浏览器里打开字符画,这样才可以看到完整的,如果你把缩小的比例再放大一点,生成的字符画就会失去很多细节,一般来说,宽80就可以了,高度看情况调整。
3.完整代码
from PIL import Image
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
im = Image.open('qq.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
im.save('t.jpeg')
def get_char(gray):
if gray >= 240:
return ' '
else:
return char_set[int(gray/((256.0 + 1)/len(char_set)))]
text = ''
for i in range(im.height):
for j in range(im.width):
gray = im.getpixel((j, i)) # 返回值可能是一个int, 也可能是一个三元组
if isinstance(gray, tuple):
gray = int(0.2126 * gray[0] + 0.7152 * gray[1] + 0.0722 * gray[2])
text += get_char(gray)
text += '\n'
with open('pic.txt', 'w')as f:
f.write(text)
感谢各位的阅读,以上就是"python画字符画的实现原理"的内容了,经过本文的学习后,相信大家对python画字符画的实现原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
字符
灰度
原理
黑白
图片
像素
照片
就是
情况
比例
黑色
学习
内容
字符集
白色
生成
相同
舒服
丑陋
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发转行知乎
数据库管理培训费用
超微服务器主板官网
软件开发板块的股票有哪些
网络技术五行属性
华路卓网络技术公司
移动宽带服务器地址
数据库技术的使用领域
深圳中澳网络技术有限公司
服务器和网络安全
计算机网络安全威胁不包括
互联网传媒科技股
数据库复制技术现状
网络安全保障服务中心
网络安全部队讨论
公安网络技术支队
深圳互联网教育科技公司
绝处逢生如何刷新服务器
稳定性好的社交软件开发
抖音网络安全条例
多个数据库隔离
网络安全管理保证书
不明人员不要过问 网络安全
图像方面的软件开发
数据库查询优化有什么操作
数据库的考试试卷及答案
虚拟机需要装什么数据库
网络安全理由
七星彩票软件开发公司
孙悟空互联网科技有限公司