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 itertools模块详解
May 09 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
如何高效使用Python字典的方法详解
Aug 31 Python
Python类的继承和多态代码详解
Dec 27 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
python中字符串的操作方法大全
Jun 03 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Python tkinter布局与按钮间距设置方式
Mar 04 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中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
js Dialog 实践分享
2012/10/22 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
ajax异步请求详解
2017/01/06 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
python中实现php的var_dump函数功能
2015/01/21 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Python输出指定字符串的方法
2020/02/06 Python
sklearn+python:线性回归案例
2020/02/24 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
如何做好总经理助理
2013/11/12 职场文书
大学自主招生自荐信
2013/12/16 职场文书
预备党员表决心书
2014/03/11 职场文书
秋冬农业生产标语
2014/10/09 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
社区植树节活动总结
2015/02/06 职场文书
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记