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 运算符 供重载参考
Jun 11 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Java及python正则表达式详解
Dec 27 Python
scrapy爬虫实例分享
Dec 28 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
详解Python中的测试工具
Jun 09 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
Python调用Windows命令打印文件
Feb 07 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python 实现体质指数BMI计算
May 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正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
银行办理业务介绍信
2014/01/18 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫