图片转化为字符画
发布日期:2021-06-29 16:00:20
浏览次数:2
分类:技术文章
本文共 1227 字,大约阅读时间需要 4 分钟。
我们在使用linux的软件的时候经常会看到这样的字符画。
你千万别认为是像C语言那样一个个字符打上去的_!今天我将通过python实现一个图片转化为字符画的小工具。
首先我们需要定义一些字符,我们这里定义了这些字符
ASSIIC_CHAR = list("123q$e@x")
我们希望我们输出的字符是有颜色的,这里我们用到了colorama
里面的Fore
,也就是前景色。具体用法如下
COLORS = [Fore.BLACK, Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN, Fore.WHITE]COLORS_RGB = [(0,0,0), (255,0,0), (0, 255,0), (255,255,0), (0,0,255), (255,0,255), (0,255,255), (255,255,255)]print(COLORS[i]+"string")
因为这里只有8种颜色,所以我们的字符数量也是8个。
接着我们定义计算颜色距离的函数,也就是描述两种颜色之间的相似程度
def i2(r, g, b): color_len = [] for i in COLORS_RGB: temp = (i[0] - r)**2 + (i[1] - g)**2 + (i[2] - b)**2 color_len.append(temp) return color_len.index(min(color_len))
接着我们定义获取字符的函数
def get_char(r, g, b, a=256): i = i2(r, g, b) return ASSIIC_CHAR[i], i
通过这个函数,我们获得各颜色对应的字符以及各自的位置。
最后在主函数中打开一幅图片,并且对图片大小重新定义,读取重定义后的每个图片的像素,测算像素对应的颜色。
if __name__ == '__main__': pic = Image.open(IMG) pic = pic.resize((WIDTH, HEIGHT), Image.NEAREST) pic.show() txt = "" for i in range(HEIGHT): for j in range(WIDTH): ch, w = get_char(*pic.getpixel((j, i))) print(COLORS[w]+ch*3, end='') txt += ch print('\n') txt += '\n'
最后的效果图
项目地址,give me a star O(∩_∩)O!
转载地址:https://coordinate.blog.csdn.net/article/details/79299700 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月23日 00时50分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
a标签中href调用js的几种方法
2019-04-29
jstl标签详解
2019-04-29
Eclipse中使用SVN的使用
2019-04-29
JSON.parse和eval的区别
2019-04-29
JQuery中$.ajax()方法参数详解
2019-04-29
正则表达式的数字实例
2019-04-29
OGNL表达式struts2标签“%,#,$”的区别
2019-04-29
struts2中<s:if>标签的使用
2019-04-29
js 刷新页面window.location.reload();
2019-04-29
【转】EasyUI 验证
2019-04-29
java开发时内存溢出问题
2019-04-29
【easyui】combobox 关于省市联动
2019-04-29
设置csdn皮肤方法,更改自己喜欢的老版皮肤
2019-04-29
Eclipse中无法查看JDK源码,解决方法
2019-04-29
Git操作常用口令
2019-04-29
IDEA去除掉虚线,波浪线,和下划线实线的方法
2019-04-29
MYSQL新特性secure_file_priv 读写文件
2019-04-29