图片处理拓展篇 : 图片转字符画(ascii)
首先要明确思路, 图片是由像素组成的, 不同的像素有不同的颜色(rgb), 那么既然我们要转化为字符画, 最直接的办法就是利用字符串来替代像素, 也就是用不同的字符串来代表不同的像素. 另外图片一般来讲是彩色的, 而acsii(一般打印在终端上吧) 都是黑白的, 此时就要介绍另外一个概念了 :
灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像.
到这里思路就很明确了, 我们要做的就是两件事 :
1. 将每一个像素点(彩色图片用rgb)映射到每一个灰度值...
2. 将灰度值映射到每一个字符串...
所以我们还需要从像素点的rgb到灰度值的转换公式 : 灰度值 = 0.2126 * r + 0.7152 * g + 0.0722 * b.
代码如下 :
1 from PIL import Image 2 3 ascii_chars = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.") #用来替代像素的字符集合... 4 5 def get_chars(r, g, b, alpha = 256): 6 global ascii_chars 7 if alpha == 0: 8 return ' ' 9 length = len(ascii_chars) 10 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) 11 unit = alpha / length #将256个像素均分给字符... 12 return ascii_chars[int(gray/unit)] 13 14 15 16 imagePath = "/Users/zhangzhimin/ascii_dora.png" 17 outPutHeight = 70 18 outPutWidth = 100 19 20 21 img = Image.open(imagePath) 22 img = img.resize((outPutWidth, outPutHeight)) 23 24 25 txt = "" 26 for y in range(outPutHeight): 27 for x in range(outPutWidth): 28 txt += get_chars(*img.getpixel((x, y))) 29 txt += '\n' 30 31 print(txt)
效果大概是这样的 :
值得一提的是只对一些层次简单的图形会有很好的效果, 如果想要解析复杂的图片建议增加字符串的个数以及显示屏的大小...
感谢实验楼提供这样一个有趣的编程练习...
转载于:https://www.cnblogs.com/nzhl/p/5599346.html
图片处理拓展篇 : 图片转字符画(ascii)相关推荐
- golang实现图片颜色反转、图片灰度、缩放、转为字符画
看到网上很多通过字符形成的画,觉得很好玩,于是网上搜索了下原来叫字符画. 见百度百科:https://baike.baidu.com/item/%E5%AD%97%E7%AC%A6%E7%94%BB/ ...
- 字符画——ASCII art
首先先推荐几个生成字符画的网址 http://www.topster.de/zh/text-to-ascii/ https://linux.cn/article-3405-1.html 五个超 ...
- python 图片转字符画
python 图片转字符画 项目介绍 本实验用 50 行 Python 代码完成图片转字符画小工具.通过本实验将学习到 Linux 命令行操作,Python 基础,pillow 库的使用,argpar ...
- python动态图片转字符画_GIF动态图,视频?都能用Python转换成字符画图像
字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图片 首先,我们来演示将静态图片转为字符画,功能实现主要用到 ...
- python动态图片转字符画_使用python实现一个将图片转换成字符画的功能
使用python实现一个将图片转换成字符画的功能 发布时间:2020-11-05 16:01:25 来源:亿速云 阅读:97 使用python实现一个将图片转换成字符画的功能?针对这个问题,这篇文章详 ...
- python学习之手把手教你将图片变成黑白或彩色字符画(骚操作)
文章目录 前言 一.字符画的实现原理 二.黑白字符画实现代码 三.彩色字符画生成 代码实现: 总结 前言 字符画这个话题,似乎早在贴吧时代就已经被玩烂了.在百度图片随便一搜索,就能够看到非常多.然后在 ...
- 教你用Python将图片转化为字符画!附源代码
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 Whatever you are facing today, remem ...
- 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解
本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...
- Python3,为了给女神暗送秋波,我默默的写了一个图片字符画生成器,真香。
图片字符画制作 1.引言 2.代码实战 2.1 原理 2.2 实例 3.总结 1.引言 小屌丝:鱼哥,给你看个照片. 小鱼:什么-照片-首先声明,我可是正经人. 小屌丝:你先看看. 小鱼:就这,有啥好 ...
最新文章
- 字符串插入_动态规划----字符串编辑最小距离
- 雷神开机logo更改_雷神911 pro-钛空版开售,陪你过一个不一样的520
- intimidated
- mysql 定期备份_MySQL定时备份(全量备份+增量备份)
- 浓郁东方民俗剪纸风新年春节海报,psd分层模板
- 服务器间 存活状态,Shell脚本监控LVS后台服务器存活状态
- 大数据平台组件布置 与 进程查看
- 批量修改文件名称的方法
- 如何从型号识别ALTERA的Cyclone IV系列FPGA所包含的信息
- 人工智能产品经理如何面对数据挖掘
- 三.修改Jenkins插件下载路径
- 天才AI少年范浩强坚信“弄斧要到班门”
- 【LeetCode】把数字翻译成字符串最长不含重复字符的子字符串
- 第七章 NoSQL数据库技术(二)
- 一套ASP.NET优惠券领取微信小程序源码(前台+后台)
- 安全、可靠、合规,华为云守护企业网站安全
- 最小二乘拟合(矩阵)
- 【CodeForces】CF3B Lorry
- 我肝了long long time 的笔记(别白嫖啊)
- 映恩生物Duality Biologics完成9000万美元B轮融资
热门文章
- 【牛客 - 297C】little w and Segment Coverage(差分数组,区间差分,思维,卡线段树)☆
- 动手学无人驾驶(6):基于IMU和GPS数据融合的自车定位
- 吴恩达机器学习作业(1):线性回归
- quartz mysql索引_分布式系统中的定时任务全解(二)
- oracle如何把字符集改回默认,更改oracle字符集
- java gc回收机制种类_JAVA的垃圾回收机制(GC)
- UNIX(多线程):27---多线程并发之原子操作与无锁编程
- C++:18---const关键字(附常量指针、指针常量、常量指针常量)
- java 最大公约数和最小公倍数
- C++ primer 第11章 关联容器