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查看zip包中文件及大小的方法
Jul 09 Python
让python在hadoop上跑起来
Jan 27 Python
python中异常报错处理方法汇总
Nov 20 Python
python常见排序算法基础教程
Apr 13 Python
python抓取文件夹的所有文件
Feb 27 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
python3实现逐字输出的方法
Jan 23 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
js切换div css注意的细节
2012/12/10 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
几行js代码实现自适应
2017/02/24 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
捐助倡议书范文
2014/04/15 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
公司的力量观后感
2015/06/05 职场文书
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS