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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
Python编程之属性和方法实例详解
May 19 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
浅析python继承与多重继承
Sep 13 Python
Python常用模块函数代码汇总解析
Aug 31 Python
python中reload重载实例用法
Dec 15 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
总结几个非常实用的Python库
Jun 26 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实现中文圆形印章特效
2015/06/19 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
在django中自定义字段Field详解
2019/12/03 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python从PDF中提取数据的示例
2020/10/30 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
养生餐厅创业计划书范文
2014/03/26 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL