我们很清楚什么是图片,无外乎png、jpg等格式的文件,例如这个?

但什么是字符画呢?先看一下官方介绍:

字符画,一种由字母、标点、汉字或其他字符组成的图画。简单的字符画是利用字符的形状代替图画的线条来构成简单的人物、事物等形象,它一般由人工制作而成;复杂的字符画通常利用占用不同数量像素的字符代替图画上不同明暗的点,它一般由程序制作而成。字符画是互联网时代的产物,通常应用于即时聊天中。

简单一句话:就是把图片 png、jpg 等格式转为文本 txt 格式。例如这个

要把图像转换为文本,这其中有一个很大的困难,就是文本没有颜色,所以特别引进了一个概念:文本灰度,就是把不同字母在屏幕上显示的大小排序,得到一张灰度表,用这个灰度表来转换图片,可以达到比较好的效果。

话不多说,还是上代码才是硬道理。

友情提示:如果还未安装PIL,请先安装。在终端运行该命令:pip install Pillow

第一步:先准备一些会使用到的符号

serarr = ['@', '#', '$', '%', '&', '?', '*', 'o', '/', '{', '[', '(', '|', '!', '^', '~', '-', '_', ':', ';', ',', '.', '`', ' ']

第二步:获取图片的宽、高、调整图片灰度;根据条件创建字符

count = len(serarr) # 字符数组的长度def toText(image_file): # 该参数为图片文件    asd = ''  # 储存字符串    for h in range(0, image_file.size[1]):  # 遍历图片高度的坐标点        for w in range(0, image_file.size[0]):  # 遍历图片宽度的坐标点            r, g, b = image_file.getpixel((w, h))  # 获取图片各个坐标点的颜色值            gray = int(r * 0.299 + g * 0.587 + b * 0.114) # 调整图片灰度            asd = asd + serarr[int(gray / (255 / (count - 1)))] # 根据灰度选择字符并进行拼接        asd = asd + '\r\n' # 换行    return asd

完整代码如下:

from PIL import Imageserarr = ['@', '#', '$', '%', '&', '?', '*', 'o', '/', '{', '[', '(', '|', '!', '^', '~', '-', '_', ':', ';', ',', '.', '`', ' ']count = len(serarr)def toText(image_file):    asd = ''      for h in range(0, image_file.size[1]):          for w in range(0, image_file.size[0]):              r, g, b = image_file.getpixel((w, h))            gray = int(r * 0.299 + g * 0.587 + b * 0.114)            asd = asd + serarr[int(gray / (255 / (count - 1)))]        asd = asd + '\r\n'    return asdimage_file = Image.open("22.jpg")  # 打开图片tmp = open('tmp.txt', 'a')  # 打开保存文件,如果没有该文件会自动创建tmp.write(toText(image_file)) # 写入tmp.close()

不到20行的代码就完成个该功能,有没有很简单?!快来试一下吧。下面来欣赏一下我的成果。

PS友情提示:

1、如果运行完发现 txt 文件打开之后不像图片,可缩小字体查看,直到图片显示完全。

2、如果出现类似红点点的内容,可将 txt 自带的检查拼写这个功能取消。

最新文章

  1. java io在文件结尾持续添加内容
  2. 表示微型计算机系统稳定性,计算机基础知识(三)135
  3. 参数编码 完全解决方案 (转)
  4. android MemeoryFile和Parcel操作文件描述符fd
  5. 华硕主板前置耳机插孔没有声音怎么办
  6. ZJOI2018 Round2 被踩记被虐记
  7. Hbase的应用场景及特点
  8. Unity 编辑器开发实战【Editor Window】- Replacer 替换器
  9. yolo 深度学习_YoLo v1-v3深度学习网络-结构简介
  10. C#工作总结(一):Fleck的WebSocket使用
  11. 那些年,和女孩们同居的日子
  12. 爬虫有道词典进行自动翻译
  13. python arduino i2c1602_Arduino 将1602液晶显示屏改造为IIC接口
  14. 盈致科技2021大事件 感恩回首过去,高歌猛进一同共创未来
  15. lumaQQ移植到Android之消息篇
  16. 计算机科学家书法,把书法和菜名结合,AI 模型创作独特的中国书法艺术
  17. 简单聊聊NOR Flash、NAND Flash和EMMC Flash
  18. Picovoice离线语音识别在Linux系统的部署
  19. 机器学习-Sklearn-13(回归类大家族-下——非线性问题:多项式回归(多项式变换后形成新特征矩阵))
  20. 转载:看一遍就理解,图解单链表反转

热门文章

  1. python——import导入模
  2. 魔兽世界转服务器显示完成,魔兽世界怀旧服:TAQ变简单了,为什么还是出现了AFK大潮?...
  3. 计算机专业配置笔记本,学计算机专业的买什么样配置和价格的笔记本好?
  4. html语言重点,HTML 基础重点(1)
  5. 执行文件异常报错:ImportError: attempted relative import with no known parent package
  6. 推荐系统顶会RecSys’20亮点赏析
  7. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
  8. python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项
  9. day45-前端CSS
  10. ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式