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的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python实现周期性抓取网页内容的方法
Nov 04 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
python自动裁剪图像代码分享
Nov 25 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python微信好友数据分析详解
Nov 19 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
django有哪些好处和优点
Sep 01 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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堆栈与列队的学习
2013/06/21 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
详解vue添加删除元素的方法
2018/06/30 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Python输出指定字符串的方法
2020/02/06 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
斯凯奇澳大利亚官网:SKECHERS澳大利亚
2018/03/31 全球购物
入党积极分子思想汇报范文
2014/01/05 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL