python实现图片转字符画


Posted in Python onFebruary 19, 2021

本文实例为大家分享了python实现图片转字符画的具体代码,供大家参考,具体内容如下

源码(注释很详细):

# -*- coding=utf-8 -*-
###################################
#1:import argparse

#2:parser = argparse.ArgumentParser()

#3:parser.add_argument()

#4:parser.parse_args()

#解释:首先导入该模块;然后创建一个解析对象;然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;

#最后调用parse_args()方法进行解析;解析成功之后即可使用

###################################


from PIL import Image #从PIL模块中引入Image这个类
import argparse #引入argparse这个模块。argparse 库是用来管理命令行参数输入的

#命令行输入参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file') #输入文件
parser.add_argument('-o', '--output') #输出文件
parser.add_argument('--width', type = int, default = 80) #输出字符画宽
parser.add_argument('--height', type = int, default = 80) #输出字符画高

#获取参数
args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

#定义一个ascii的列表,其实就是让图片上的灰度与字符对应
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256): #这个调用跟im.getpixel函数有关,这个函数是根据图片的横纵坐标,把图片解析成r,g,b,alpha(灰度),有关的四个参数,所以这里输入参数是四个
 if alpha == 0: #如果灰度是0,说明这里没有图片
 return ' '
 length = len(ascii_char)#计算这些字符的长度
 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)#把图片的RGB值转换成灰度值

 unit = (256.0 + 1)/length #257/length
 return ascii_char[int(gray/unit)] #这个相当于是选出了灰度与哪个字符对应。

if __name__ == '__main__':#如果是本程序调用,则执行以下程序

 im = Image.open(IMG)#打开图片
 im = im.resize((WIDTH,HEIGHT), Image.NEAREST)#更改图片的显示比例

 txt = ""#txt初始值为空

 for i in range(HEIGHT):#i代表纵坐标
 for j in range(WIDTH):#j代表横坐标
 txt += get_char(*im.getpixel((j,i)))#把图片按照横纵坐标解析成r,g,b以及alpha这几个参数,然后调用get_char函数,把对应的图片转换成灰度值,把对应值得字符存入txt中
 txt += '\n'#每行的结尾处,自动换行

 print(txt)#在界面打印txt文件

 #字符画输出到文件
 if OUTPUT:
 with open(OUTPUT,'w') as f:#文件输出
 f.write(txt)
 else:
 with open("output.txt",'w') as f:#文件输出
 f.write(txt)

使用指南:

进入程序所在目录:输入图示命令:python ascii.py lanpang.png,ascii.py是程序名,lanpang.png是图片名

python实现图片转字符画

图片:lanpang.png

python实现图片转字符画

效果图:

python实现图片转字符画

图片太大,截图不全,用Windows命令行打开看看,文件为output.txt

windows命令行打开文本文件的命令是:type 文件名

例如:type output.txt

python实现图片转字符画

打开后效果图:

python实现图片转字符画

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Python Pandas数据中对时间的操作
Jul 30 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
Python autoescape标签用法解析
Jan 17 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Django drf请求模块源码解析
Jun 08 Python
python对文档中元素删除,替换操作
Apr 02 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 #Python
python 基于DDT实现数据驱动测试
Feb 18 #Python
详解解决jupyter不能使用pytorch的问题
Feb 18 #Python
python 使用openpyxl读取excel数据
Feb 18 #Python
Python用SSH连接到网络设备
Feb 18 #Python
python 实现IP子网计算
Feb 18 #Python
详解python3 GUI刷屏器(附源码)
Feb 18 #Python
You might like
PHP优于Node.js的五大理由分享
2012/09/15 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
浅析vue数据绑定
2017/01/17 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
python中turtle库的简单使用教程
2020/11/11 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
工程技术员岗位职责
2014/03/02 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
太行山上观后感
2015/06/05 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书