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制作一张字符画相关推荐

  1. python 调试代码_菜鸟世界 -借助ipython 调试代码

    1.IPython IPython是一个python的交互式shell,比python默认的shell要好用的多,今天我们就来学习一下如何借用IPython来调试代码 2. 一段有错误的代码 # co ...

  2. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  3. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  4. 我的世界python写游戏_快来试试Python写的游戏《我的世界》

    <我的世界 Minecraft>大家应该都听说过,但你有没有想过自己用Python写一个这样的游戏呢?太难.太复杂了?也许吧,但是不试一试你怎么知道能不能成呢? 国外有位叫fogleman ...

  5. canvas全局合成画月牙_教你用Python将自己喜欢的图片转成字符画,居然还有动态的 - 松鼠爱吃饼干...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章一级Python技术 ,作者派森酱 前言 字符画是一种由字母,标点或其他字 ...

  6. python中turtle画笑脸_基于turtle的Python作画

    2018年6月12日笔记 按win+q键换出搜索界面,输入path,进入系统属性,选择高级,选择环境变量.在系统变量中的PATHEXT这个变量中文本内容为.COM;.EXE;.BAT;.CMD;.VB ...

  7. python做外贸_跟着销售学python(3)---开发微信公平台(1)

    跟着销售学python(3)--- 开发微信公共平台(1) 首先交代一下, 目前我的学习背景啊: 我自己是一个创业的外贸服务公司, 自己主要做销售,学python主要目的是为了工作上的帮助吧. 自己的 ...

  8. python基本原理概论_怎样开始自学Python?

    本人才疏学浅,学识大多浅尝辄止,故文章若有错误,不论是文字笔误还是理解有错,烦请您留言以告知,本人必定感激不尽! **Python分类下的系列文章,不断更新中,如果你迫不及待地想要看看写得如何可以先试 ...

  9. python opencv手册_教你用Python实现5毛钱特效(给你的视频来点料)

    一.前言 请务必看到最后.Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛.前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视 ...

最新文章

  1. VisualStudio2008+水晶报表的使用
  2. css hack 学习总结
  3. 清华大学参赛计算机集群,清华学生超算团队获得国际大学生超级计算机竞赛(SC18)总冠军...
  4. #python#练习
  5. 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
  6. Keras Datasets 国内下载镜像
  7. document.all用法
  8. php操作mysql数据库的基本类
  9. SQL中的字符串函数
  10. android建脚本,Android Studio Gradle构建脚本(示例代码)
  11. 微生物组对肥胖影响的最新研究分析
  12. linux下的c++filt 命令
  13. 阿里巴巴 29 个屌炸天的开源项目!
  14. bzoj 3772 :精神污染 线段树+打标记 or 主席树
  15. 推荐一款团队协作软件---confluence
  16. z变换判断稳定性和因果性_LTI系统判断因果性稳定性.PPT
  17. 基于物理的渲染理论基础(PBR渲染)
  18. 安卓电子书格式_6 款值得收藏的电子书阅读软件推荐
  19. 东莞市中考计算机考试试题,东莞市数学中考真题(共7份word版,含答案).doc
  20. R文本挖掘-文章关键词提取

热门文章

  1. mysql学生选课系统的关系模型_数据库系统原理ER模型与关系模型
  2. 系统架构设计笔记(46)—— 面向服务的架构
  3. ps新建、打开和保存图像文件
  4. Android Study之自定义View进阶路:掌握绘制基本图形(一)
  5. 几种Linux版本的使用心得和比较
  6. ARCore快速入门-03检查手机是否支持ARCore功能
  7. 适用于 Web 开发者的 Atom 编辑器插件
  8. 干掉鼠标!用这 4 款 App 大幅提升 Mac 键盘效率
  9. HTML中marquee标签的使用
  10. 制作一款STC32G封装为TSSOP20的测试电路板