先上代码:

  1. from PIL import Image
  2. import argparse
  3.  
  4. #命令行输入参数处理
  5. parser = argparse.ArgumentParser()
  6.  
  7. parser.add_argument('file') #输入文件
  8. parser.add_argument('-o', '--output') #输出文件
  9. parser.add_argument('--width', type = int, default = 80) #输出字符画宽
  10. parser.add_argument('--height', type = int, default = 80) #输出字符画高
  11.  
  12. #获取参数
  13. args = parser.parse_args()
  14.  
  15. IMG = args.file
  16. WIDTH = args.width
  17. HEIGHT = args.height
  18. OUTPUT = args.output
  19.  
  20. ascii_char = list("@#&$%*o!;.")
  21. # 将256灰度映射到70个字符上
  22. def get_char(r,g,b,alpha = 256):
  23. if alpha == 0:
  24. return ' '
  25. length = len(ascii_char)
  26. gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
  27. unit = (256.0 + 1)/length
  28. return ascii_char[int(gray/unit)]
  29.  
  30. if __name__ == '__main__':
  31. im = Image.open(IMG)
  32. im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
  33. txt = ""
  34. for i in range(HEIGHT):
  35. for j in range(WIDTH):
  36. txt += get_char(*im.getpixel((j,i)))
  37. txt += '\n'
  38. print(txt)
  39.  
  40. #字符画输出到文件
  41. if OUTPUT:
  42. with open(OUTPUT,'w') as f:
  43. f.write(txt)
  44. else:
  45. with open("output.txt",'w') as f:
  46. f.write(txt)

运行:

python img2txt.py   xxxx.jpg

会在img2txt.py  文件所在的目录里生成一个output.txt文件.

运行的前提,需要安装PIL

window7 下安装使用:

cmd下执行命令:  easy-install pillow

如果出错,就去网站直接下载文件,我的系统是windows7 64,python为3.7,则下载:Pillow-6.2.1-cp37-cp37m-win_amd64.whl

然后执行:

pip  install Pillow-6.2.1-cp37-cp37m-win_amd64.whl

python图片转字符画(转)的更多相关文章

  1. Python 图片转字符画

    Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...

  2. Python 图片转字符画 学习笔记

    Python 图片转字符画 学习笔记 标签(空格分隔): Python 声明:此文章和所有代码是学习笔记,非原创,原文教程地址:https://www.shiyanlou.com/courses/37 ...

  3. [笔记] Python 图片转字符画

    一.介绍 用Python 代码完成图片转字符画 二.python 环境 Python 3.6.6 pillow 5.1.0  Python 图像处理库, 需要另外安装 三.原理 gray = 0.21 ...

  4. Python图片转字符画

    PIL安装很麻烦,推荐下载exe直接安装 PIL官网:http://pythonware.com/products/pil/ 但现在里面下载链接访问不了,我把32位和64位版本上传到博客园以供下载 P ...

  5. 教程,Python图片转字符堆叠图

    Python 图片转字符画 一.实验说明 1. 环境登录 无需密码自动登录, 2. 环境介绍 本实验环境采用带桌面的UbuntuLinux环境,实验中会用到桌面上的程序: LX终端(LXTermina ...

  6. 使用Python生成ASCII字符画

    使用Python生成ASCII字符画 在很多的网站主页中或者程序的注释中会有一些好看的字符注释画.显得很牛逼的样子 例如: 知乎 _____ _____ _____ _____ /\ \ /\ \ / ...

  7. python学习---50行代码实现图片转字符画2

    from PIL import Image codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<> ...

  8. python学习---50行代码实现图片转字符画1

    转自:https://blog.csdn.net/mm1030533738/article/details/78447714 项目链接: https://www.shiyanlou.com/cours ...

  9. 20个python项目--图片转字符画

    转自实验楼:https://www.shiyanlou.com/courses/370/learning/?id=1191 代码: # -*- coding:utf-8 -*- from PIL im ...

随机推荐

  1. html+css实现奥运五环(环环相扣)

    <!DOCTYPE html> <html> <head> <title>奥运五环</title> <style type=" ...

  2. docker 安装 gitlab 中文社区版

    docker pull twang2218/gitlab-ce-zh 创建一个docker 目录 /usr/local/docker/gitlab 创建一个 docker-compose.yml ve ...

  3. C语言课程程序设计

    项目名称和目标 项目为基于EasyX库的RPG游戏,目标能实现控制游戏主角自由移动,能与NPC对话交互. 我组目前还未确定具体项目名称 项目主体功能 项目的主体功能具有一个游戏所拥有的完整功能,包括但 ...

  4. JVM 堆内存设置原理(转)

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  5. Vue.js官方文档学习笔记(二)组件化应用的构建

    组件化应用的构建 组件化应用允许我们使用小型.独立和通常可复用的组件构建大型应用. Vue注册组件 Vue.component('todo-item',{template:'<li>这是个 ...

  6. SIGCHLD和wait/waipid函数的关系

    SIGCHILD只是在子进程退出的时候发送给父进程的一个信号值,这是一种异步通知父进程的方式.父进程可以捕获,忽略这个信号,默认动作是忽略此信号. 常用的使用方式是,当SIGCHILD信号发生时候,主 ...

  7. vue项目中引入循环执行setInterval或者requestAnimationFrame的用法等

    项目中循环计时处理某些方法的情况还是比较常见的,一般会用setInterval来处理,但是这个方法会似的页面卡顿等使用体验不好. 所以就使用浏览器提供的requestAnimationFrame方法, ...

  8. CentOS6.6安装使用MyCat

    https://blog.csdn.net/u012948302/article/details/78902092 1. 安装Java环境MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安 ...

  9. django Paginator 让分页变得完美

    参考大佬地址:https://www.zmrenwu.com/courses/django-blog-tutorial/materials/21/ 类视图 from django.contrib.au ...

  10. mysql导入导出数据,备份,恢复数据

    MYSQL 实现导入数据 .备份和恢复数据库 1.使用msql命令导入数据 # mysql -uroot -p 需要选择一个数据库 < runoob.sql #mysql -u username ...