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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
Python中反射和描述器总结
Sep 23 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
django admin 添加自定义链接方式
Mar 11 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
Python爬虫UA伪装爬取的实例讲解
Feb 19 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邮件专题
2006/10/09 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP 快速排序算法详解
2014/11/10 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
javascript removeChild 使用注意事项
2009/04/11 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
Python对数据库操作
2016/03/28 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
总监职责范文
2013/11/09 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
揭牌仪式主持词
2014/03/19 职场文书
实验室标语
2014/06/21 职场文书
法人身份证明书
2014/10/08 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
Python中for后接else的语法使用
2021/05/18 Python