python实现图片转字符画的完整代码


Posted in Python onFebruary 21, 2021

前言

最初是在实验楼看到的一个小实验

实验楼-Python 图片转字符画

原文是需要通过命令行运行程序

这里改为直接运行,需要固定一些参数

运行平台: Windows

Python版本: Python3.6

IDE: Sublime Text

1、实验准备

pillow库的安装

pip install pillow

2、实验原理

字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。

最终显示的是黑白色的字符画,那么彩色的图片怎么转换成黑白的呢?这里就需要了解灰度值的概念了。

<span style="font-size:16px;">灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。</span>

我们利用下面的公式将像素的RGB值转换成灰度值:

<span style="color:#ff0000;">gray = 0.2126 * r + 0.7152 * g + 0.0722 * b</span>

用不同的字符代表不同的灰度值,字符的种类和数量可以根据自己需要的效果进行调整,最好从前往后可以看到明显的变化,最后一个字符为空格符最佳:

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

3、完整代码

#-*- coding:utf-8 -*- 
from PIL import Image 
 
IMG='D:\Code\python\\test1\\ascii_dora.png' 
 
WIDTH=60 
HEIGHT=45 
 
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") 
 
#将256灰度映射到70个字符上 
def get_char(r,g,b,alpha=256):#alpha透明度 
 if alpha==0: 
  return ' ' 
 length=len(ascii_char) 
 gray=int(0.2126*r+0.7152*g+0.0722*b)#计算灰度 
 unit=(256.0+1)/length 
 return ascii_char[int(gray/unit)]#不同的灰度对应着不同的字符 
 #通过灰度来区分色块 
 
if __name__=='__main__': 
 im=Image.open(IMG) 
 im=im.resize((WIDTH,HEIGHT),Image.NEAREST) 
 txt="" 
 for i in range(HEIGHT): 
  for j in range(WIDTH): 
   txt+=get_char(*im.getpixel((j,i))) 
  txt+='\n' 
 
 print (txt) 
 #写入文件
 with open("output.txt",'w') as f: 
  f.write(txt)

4、结果

python实现图片转字符画的完整代码

总结

到此这篇关于python实现图片转字符画的文章就介绍到这了,更多相关python图片转字符画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python处理csv数据的方法
Mar 11 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
Python底层封装实现方法详解
Jan 22 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
Python - 10行代码集2000张美女图
May 23 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 #Python
Scrapy实现模拟登录的示例代码
Feb 21 #Python
scrapy-splash简单使用详解
Feb 21 #Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 #Python
利用Python如何画一颗心、小人发射爱心
Feb 21 #Python
python 第三方库paramiko的常用方式
Feb 20 #Python
Python中Qslider控件实操详解
Feb 20 #Python
You might like
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php strftime函数的详细用法
2018/06/21 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python中 map()函数的用法详解
2018/07/10 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
简单介绍django提供的加密算法
2019/12/18 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
C++是不是类型安全的
2014/02/18 面试题
中专自我鉴定范文
2013/10/16 职场文书
工地门卫岗位职责
2013/12/30 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
委托证明模板
2014/09/16 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
信用卡工作证明范本
2015/06/19 职场文书
创业计划书之美容店
2019/09/16 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript