python画鸟_菜鸟世界 -使用python制作一张字符画
1、灰度图与字符画
黑白照片大家都不陌生,但黑白照片并不是只有黑白两种颜色,还有介于黑和白之间的颜色,这些颜色色深度从0到255,0是黑色,255是白色,也叫灰度值
制作一张字符画的原理就是先将一张图片转为灰度图,也就是黑白照片的样子,然后呢,根据灰度值的不同,用不同的字符来替换
2、PIL
PIL库可以用来处理图片,接下来需要定义一组字符
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
前面的字符看起来都比较重,后面的都比较弱小,因此重的字符去替换图片中颜色深的地方,后面的字符去替换颜色浅的地方
3、示例代码
# coding=utf-8
from PIL import Image
import click
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
@click.command()
@click.option('--file')
@click.option('--height', default=60)
@click.option('--width', default=120)
@click.option('--output')
def change(file, height, width, output):
im = Image.open(file)
print height, width
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)))
txt += '\n'
txt = txt.replace('.', ' ')
with open(output, 'w') as f:
f.write(txt)
if __name__ == '__main__':
change()
需要注意 txt = txt.replace('.', ' ') 这句话,你可以不在自己的程序加,我加上是为了让字符画更简洁
找一张实验图片
执行命令
python my_pic_to_txt.py --file=1.jpg --output=1.txt --width=120 --height=40
最终得到的结果如下
`'' ^ ' '' '' ''' ' ' ` ' ' ' ' ` ' '
' &W&WW&&8M '?uULQCn)` tWB8' LB8&&BqI^ ''(?}b&%88|
'nW8WW&&&W&WMm wt '"' ' '(m_/88&W&W&W&&8p ` `kMW&W&&@W_' +wc> ` ` ' ?zm' "}]}?-MWWM%Wd'
'zM&8&&&&&a&%i '' ' l8MW&&&WWWWWb B&WWWWWWWM8&r '` ~}[][]}}c&WW&&&a'
'8&&WWWWWW8 `' ##WWWWW&&8 :M%WMWWWWWB' '`}]]-}}[]?lWW&&&W&`
B&WW&&M#{ "%WWWWWW& u&WWWWWWB~' ~{}[]!_}l<_xh>
#8MMW8W *MM8W&$ '-&8&M#&0 ':[][[}{Z?
8M&&B"` U&MM%' BWW&8Z' `)}][[][}[:
"t#8 "@WU #&&0'` }{}[[]}}]:
`'"i' ' /Bb" uo{ ^: `a ' '' ``' '` +?]}[{?_
q ^x8&$&Wl ' `M888Mc d ^ p#W##x `'f#&8$; >?]?Y
' n WB * ' p;^ 8a"' ') :' 08k'']$ :8" ^%Wf ' 'l
} w& @b`% ' ' b c8 Bo ! f` :&r, " +^ "[+' `B&' >
u k% >' "`8&I W8 ] /' t8 @#!? '!a8% m&' l
q ^ #$" _/ 8&/" '1> ##I' k' 'Ba '] ` 8% )'
f ` m' ' $ ' C' 'x ' " 'xi ' ` `` > ' ^ '
'Q $'' '` l< `X ' q @' ' 'k `0
k ' #b>`u$l' `h` ' b @^ ` ;$ `x '
'~
'c[ ' !Z" L ` lO;
>]{+Y cu}}?` ?zuO" ' '^Ourz
,W#}){{}aI' ^`' '^ lqX[{?)n8&` '' @Wxvnz0< ` ' '' `!qxnunool'
BW]{-&]{[{]+\UkbpppaO/?-}[[[]-M&MM# ' *&W8UunvxxvOC[l^ :;}m0zxnuuUrnYa%
?WU])WM&J}]][}?]}}[]{}}]}}[[[(@&&MW8 ' M&&&&&nnxuuvxxxxuvnxurunnnuu##bnnY&x
YM8b8WWWWb
/&&WWWW&WW)!{]{[[}}[}}}}[}~+WWWWWW&WI `MWWWWW&WWJcxnnnnnnnnnnvxc:1M&M&&WWWW
+&&WWWW&W&$':+1}[}}[}}}}?:I"8WWWWWMW< WWWWWWW&;/vnnnnnnuuxv-i>!c8MW&WWW&
xJ&W&WWWWWW#:I"i]{}]}}>,;:`#MWWWWW&&v '`aW&WWWWWWWZ!>}cvxnxcx+
q,oMM&&WWWW&:;:;;I;:I;:I,`&WWWW&W&M#d ^'8M&&WWW&W#x>!!!!i!i!!l>
a'I$8WWWW&WWU;I;;;;;:;II;h%&&W&Mo&$ o il;8&M#WW#&W8I!ii!>i!!i!!:8WW&WW&MMM]'
''BW^: *#&$:::;;;;;;;I;:CMWW#&W&/: $ }xl>0##&WWWWM>ii!!!!!!ii!lWWWW&&WaC:}+
,l:~p8W&&l":`l[I^;;II;;;;;;;;;;;!88Bh";: B&b ' ' \%W|>l:|88BpIl!ii!!!!!ii>!lXM&W8Wuil;B@ `
W&8#&&WW#cl;II;l:l;;;;;;;;;;;;;;:II;l::"@&&*&BWM$x ' $%8W&WMWWfil>!!>>!!!!!!!!!>;;;">!~lMW&8w! l
BW&WWWWWWMw:!;I;;;;;;;;;;;;;;;I;:;I:I: BWW&&&&&&&Q @&WWWWWW8&>iIii>i!!!!!!!!!!!!!!!!ii!!i>"&W&WWWWWW8l
'-&W&WWWWWW&@":II;;;;;;;;;;;;;;;I;I;I:{&MM&&&&&&%% ` (8WWWWWWWM#{>>>!!!!!!!!!!!!!!!!!!!!>>l>##&WWWWW&&&`
j#WWWWWWWW#@ l":I;;;;;;;;;;;;;;;;;`pWWWWW&&&&+ @8W&WWWWWM*a>!!!!!!!!!!!!!!!!!!!!>iix*WWWWWWWW&&O
'`#W%WWMWW&&WB`l;::IlIllIII;I;;;'&M&W&&&&&W&M$; W8&WWWWWMW&8|>ii!>ii!!!!!!!i!!l>~C&WWWWWW&WWM#\''
'' ]##*obOY\>^ ^+tYCmbaahhhhbbqZx)Co88MWW&&8'' ' ^,|WWWWWWW&WW&801->i!III;;:;IIIl|&WW&&&&WW&&&% ''
' ` `' ' ' ''` '' ' ' ` :\QQn^ ''
python画鸟_菜鸟世界 -使用python制作一张字符画相关推荐
- python 调试代码_菜鸟世界 -借助ipython 调试代码
1.IPython IPython是一个python的交互式shell,比python默认的shell要好用的多,今天我们就来学习一下如何借用IPython来调试代码 2. 一段有错误的代码 # co ...
- python编程基础_月隐学python第2课
python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...
- 查看Python的版本_查看当前安装Python的版本
一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...
- 我的世界python写游戏_快来试试Python写的游戏《我的世界》
<我的世界 Minecraft>大家应该都听说过,但你有没有想过自己用Python写一个这样的游戏呢?太难.太复杂了?也许吧,但是不试一试你怎么知道能不能成呢? 国外有位叫fogleman ...
- canvas全局合成画月牙_教你用Python将自己喜欢的图片转成字符画,居然还有动态的 - 松鼠爱吃饼干...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章一级Python技术 ,作者派森酱 前言 字符画是一种由字母,标点或其他字 ...
- python中turtle画笑脸_基于turtle的Python作画
2018年6月12日笔记 按win+q键换出搜索界面,输入path,进入系统属性,选择高级,选择环境变量.在系统变量中的PATHEXT这个变量中文本内容为.COM;.EXE;.BAT;.CMD;.VB ...
- python做外贸_跟着销售学python(3)---开发微信公平台(1)
跟着销售学python(3)--- 开发微信公共平台(1) 首先交代一下, 目前我的学习背景啊: 我自己是一个创业的外贸服务公司, 自己主要做销售,学python主要目的是为了工作上的帮助吧. 自己的 ...
- python基本原理概论_怎样开始自学Python?
本人才疏学浅,学识大多浅尝辄止,故文章若有错误,不论是文字笔误还是理解有错,烦请您留言以告知,本人必定感激不尽! **Python分类下的系列文章,不断更新中,如果你迫不及待地想要看看写得如何可以先试 ...
- python opencv手册_教你用Python实现5毛钱特效(给你的视频来点料)
一.前言 请务必看到最后.Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛.前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视 ...
最新文章
- VisualStudio2008+水晶报表的使用
- css hack 学习总结
- 清华大学参赛计算机集群,清华学生超算团队获得国际大学生超级计算机竞赛(SC18)总冠军...
- #python#练习
- 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
- Keras Datasets 国内下载镜像
- document.all用法
- php操作mysql数据库的基本类
- SQL中的字符串函数
- android建脚本,Android Studio Gradle构建脚本(示例代码)
- 微生物组对肥胖影响的最新研究分析
- linux下的c++filt 命令
- 阿里巴巴 29 个屌炸天的开源项目!
- bzoj 3772 :精神污染 线段树+打标记 or 主席树
- 推荐一款团队协作软件---confluence
- z变换判断稳定性和因果性_LTI系统判断因果性稳定性.PPT
- 基于物理的渲染理论基础(PBR渲染)
- 安卓电子书格式_6 款值得收藏的电子书阅读软件推荐
- 东莞市中考计算机考试试题,东莞市数学中考真题(共7份word版,含答案).doc
- R文本挖掘-文章关键词提取