#Python #字符画 #灰度图 使用Python绘制字符画及其原理
由于最近身体状况不太好所以更新会有点慢,请大家多多包涵。同时也提醒大家注意保重身体!
前提:默认大家已经正确安装了 Python,且正确将Python配置到了系统Path 。
目录
1.字符画的概况
2. 实现原理
3. 代码汇总
4.效果图
1.字符画的概况
字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量的像素字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物。
2. 实现原理
其实原理非常简单,首先,要准备一个字符集
char_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
其次,要将图片转成灰度图,所谓灰度图就是黑白照片,这个过程中还要缩小图片,每张图片缩小的比例都不尽相同,要根据图片的实际情况来决定,这样就得到了一张缩小后的黑白照片
im = Image.open('需要生成字符画图片的路径例如C:\XX\XX.png')
im = im.resize((80, 50), Image.ANTIALIAS)
im = im.convert('L') # 转为黑白图, 每个像素都一个灰度值,从0到255, 0是黑色, 255是白色
im.save('图片保存路径与想要的名称例如C:\XX\XX.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 Imagechar_set = '''$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''im = Image.open('需要生成字符画图片的路径例如C:\XX\XX.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('将字符画存入文本文档的路径例如C:\XX\XX.txt', 'w')as f:f.write(text)
4.效果图
感谢您的阅读,如觉得有用请您点赞,您的鼓励是对我的最大动力!
END
2022/12/15
联系我:pengyu717@yeah.net
#Python #字符画 #灰度图 使用Python绘制字符画及其原理相关推荐
- python画折线图代码-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- python画折线图虚线_python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- 如何用python画数据图-用Python绘制地理图
当您的数据包含地理信息时,丰富的地图可视化可以为您理解数据和解释分析结果的最终用户提供重要价值. PlotlyPlotly是一个著名的库,用于在Python中创建交互式绘图和仪表板. 安装Plotly ...
- python画超长图-利用Python画图,千变万化,各种画图技巧!
如图所示,利用Python的turtle画了一个美国队长盾牌的标志: # 所需依赖:python3 sublime Python代码: # print 打印 print('hello world!') ...
- python画折线图代码-Python折线图的分析过程和画图的方法
说起折线图,很多人都觉得非常简单,不就是一些点连成的线吗?用 Excel 几秒钟就能画出一张折线图. 真的就这么简单吗? 想一想:在普通的折线图中,如何自动地添加一条代表平均值的横线?如何添加一条带箭 ...
- python画折线图代码-python画折线示意图实例代码
python画折线图方法 前做PPT要用到折线图,嫌弃EXCEL自带的看上去不好看,就用python写了一个画折线图的程序. import matplotlib.pyplot as plt x=[1, ...
- python画折线图-利用python画出折线图
本文实例为大家分享了python画折线图的具体代码,供大家参考,具体内容如下 # encoding=utf-8 import matplotlib.pyplot as plt from pylab i ...
- python opencv实现灰度图的符号化(仿qgis单波段伪彩色)
一.前言: 博主在使用qgis对图像进行处理的时候,发现qgis里面图层的符号化可以讲灰度图进行单波段伪彩色的操作,很方便对图像进行观察,后期需要大批量处理图像,所以用python实现了这个功能. 二 ...
- python热力图转灰度图_ThingJS之3D热力图,一个不那么“技术”的实现方式
物联网通过配置热力图,可查看该场景中设备的分布或显示设备属性功能分布.ThingJS推出3D热力图,一个不那么"技术"的实现方式! 热力图是地理位置可视化的一种表现方式,能够使得比 ...
最新文章
- 神经网络 online problem class反馈
- Andorid中使用Jsoup解析库解析XML、HTML、Dom节点---第三方库学习笔记(三)
- Git Bash中npm配置,加速下载等作用
- 基于c语言实现bp算法,基于BP网络的自学习算法和C语言实现
- mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。
- Linux在线下载安装MySQL8
- TCL语言笔记:TCL过程控制练习
- Cesium:向地图中添加线的方法
- wpe代理管家_wpe不能抓取封包
- 关于AP没办法获取IP地址故障排查及思路。
- 分享一个软件测试工程师的年终总结
- 孙溟㠭20载艺术之路
- python学习--max和reduce函数
- 论文查重的内容是哪些?
- 运放单的电源供电和双电源供电
- 【USACO3.1.4】形成的区域 二维线段树/离散化/矩形切割/浮漂法 【线段树方法以后写】
- linux服务器防病毒,Linux服务器防病毒实战(3)
- Go 报错 undefined: strings.Builder解决
- 海贼王为什么画风突变_突变对象时控制台中会记录什么
- 学习笔记(3):EXCEL VBA编程进阶-2.9 综合应用(多工作表的条件筛选)