python学习---50行代码实现图片转字符画1
转自:https://blog.csdn.net/mm1030533738/article/details/78447714
项目链接: https://www.shiyanlou.com/courses/370/labs/1191/document
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!1I;:,\"^`'.")
#将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
return ascii_char[int(gray/unit)] #选出了灰度与哪个字符相对应
if __name__ == '__main__': #如果是本程序调用,则执行以下程序
im = Image.open(IMG)
im = im.resize((WIDTH,HEIGHT), Image.NEAREST) #更改图片的显示比例
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j,i))) #把图片按照横纵坐标解析成RGBAlpha这几个参数,然后调用get_char
#函数,把对应的图片转换成灰度值,把对应值的字符存入txt中
txt += '\n'
print(txt) #在界面打印txt文件
if OUTPUT:
with open(OUTPUT,'w') as f: #文件输出
f.write(txt)
else:
with open("xx.txt",'w') as f: #文件输出
f.write(txt)
python学习---50行代码实现图片转字符画1的更多相关文章
- python学习---50行代码实现图片转字符画2
from PIL import Image codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<> ...
- [笔记] Python 图片转字符画
一.介绍 用Python 代码完成图片转字符画 二.python 环境 Python 3.6.6 pillow 5.1.0 Python 图像处理库, 需要另外安装 三.原理 gray = 0.21 ...
- python爬虫实战:利用scrapy,短短50行代码下载整站短视频
近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...
- 50行代码实现python计算器主要功能
实现功能:计算带有括号和四则运算的式子 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层 ...
- HTML5游戏实战(1):50行代码实现正面跑酷游戏
前段时间看到一个"熊来了"的HTML5跑酷游戏,它是一个典型的正面2D跑酷游戏,这里借用它来介绍一下用Gamebuilder+CanTK开发正面跑酷游戏的基本方法. CanTK(C ...
- 50行代码实现GAN | 干货演练
2014年,Ian Goodfellow和他的同事发表了一篇论文,向世界介绍了生成对抗网络(GAN).通过对计算图和博弈论的创新性组合,他们表明如果有足够的建模能力,两个相互对抗的模型可以通过普通的反 ...
- Python 图片转字符画 学习笔记
Python 图片转字符画 学习笔记 标签(空格分隔): Python 声明:此文章和所有代码是学习笔记,非原创,原文教程地址:https://www.shiyanlou.com/courses/37 ...
- 50行代码实现缓存,JAVA内存模型原理
遇见这样的高人怎么办??下面是一个简单缓存的实现,相当牛叉!自己看吧,只有50行代码. 摘自:http://www.oschina.net/code/snippet_55577_3887 import ...
- Python 图片转字符画
Python 图片转字符画 一.课程介绍 1. 课程来源 原创 2. 内容简介 本课程讲述怎样使用 Python 将图片转为字符画 3. 前置课程 Python编程语言 Linux 基础入门(新版) ...
随机推荐
- linux centos系统安装
1.下载镜像 https://www.centos.org/download/ DVD ISO 一般下载这个 erverything ISO 包含所有工具的版本 Minimal ISO最小启动版本 2 ...
- Java Integer中的IntegerCache小记
同事今天给我发了一个关于Java拆装箱的ppt,里面有这么一段代码 Integer c = Integer.valueOf(3); Integer d = Integer.valueOf(3); ...
- MySQL性能优化(一):优化方式
原文:MySQL性能优化(一):优化方式 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/v ...
- sql server 通配符
sql有四种通配符: -- %可以匹配任意长度的字符: -- _匹配单个字符: -- [charlist]匹配括号中的任何一个字符 -- [^]匹配不在括号中的任意单个字符 示例: --'[ab]'匹 ...
- MySQL安装过程中遇到的错误代码为1045的解决方法
mysql的安装包,及其图形化破解软件:https://pan.baidu.com/s/1PIzaEGpC9QEPUwZ8OowhCw 二级压缩包下边的 视图化管理软件:Navicat.exe 发 ...
- linux复习6
ubuntu------------- apt //advanced package tool,高级包工具. apt-get install centos------------- yum //yel ...
- Spark运行时的内核架构以及架构思考
一: Spark内核架构 1,Drive是运行程序的时候有main方法,并且会创建SparkContext对象,是程序运行调度的中心,向Master注册程序,然后Master分配资源. 应用程序: A ...
- vue项目-axios封装、easy-mock使用
vue全家桶概括下来就是 项目构建工具(vue-cli) 路由(vue-router) 状态管理(vuex) http请求工具 vue有自己的http请求工具插件vue-resource,但是vue2 ...
- RAD Studio 10 up1欢迎页证书不可用
不只是欢迎页,每打开一个新的工程,都会出现上面那个证书不可用的提示. 解决方法: 1.通过Fiddler网络监控软件分析发现,出现这个问题的原因是bds启动的时候会用https协议访问谷歌的统计服务器 ...
- dedecms 列表标签 去斜杠 去两边空格
首先:将 include/arc.listview.class.php 文件的第53行: $this->Fields['title'] = ereg_replace("[<> ...