sql数字转换为字符_Python|图片转换为字符画^_^

本文介绍如何将图片转换成字符画,通过使用不同字符代替图片上的明暗区域,实现从PNG或JPG格式到TXT格式的转换。文章提供了一段简洁的Python代码示例,展示了如何利用PIL库调整图片灰度并映射到字符集。
我们很清楚什么是图片,无外乎png、jpg等格式的文件,例如这个?

c6d6d76e0f599a426a9dba81038fdab1.png

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

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

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

c6ac2375f8bbffff0205f01cabceb955.png

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

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

友情提示:如果还未安装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行的代码就完成个该功能,有没有很简单?!快来试一下吧。下面来欣赏一下我的成果。

105b83f072dfd843dd527e6d84f7b5fa.png

b1534d351161e05cc3f71ef30c088b85.png

PS友情提示:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值