python绘制数字_教大家用Python制作传说中的“数字屏幕”

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:DavidLiHX

pillow库

这次我们还是要用到我们上次说的pillow库

pillow库使用pip安装

pip install pillow

pip install pillow -i “https://pypi.doubanio.com/simple/”

代码介绍

跟大家介绍一下,我们所说的“数字屏幕”是指把图片转换成字符画,这里的

字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。

最终显示的是黑白色的字符画,那么彩色的图片怎么转换成黑白的呢?这里就需要了解灰度值的概念了。

灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。

我们利用下面的公式将像素的RGB值转换成灰度值:

gray = 0.2126 * r + 0.7152 * g + 0.0722 * b

用不同的字符代表不同的灰度值,字符的种类和数量可以根据自己需要的效果进行调整,最好从前往后可以看到明显的变化,最后一个字符为空格符最佳:

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.")

|代码实现

from PIL importImage

IMG='D:\Code\python\\test.png'WIDTH=60HEIGHT=45ascii_char= list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.")#将256灰度映射到70个字符上

def get_char(r,g,b,alpha=256):#alpha透明度

if alpha==0:return ' 'length=len(ascii_char)

gray=int(0.2126*r+0.7152*g+0.0722*b)#计算灰度

unit=(256.0+1)/lengthreturn ascii_char[int(gray/unit)]#不同的灰度对应着不同的字符

#通过灰度来区分色块

if __name__=='__main__':

im=Image.open(IMG)

im=im.resize((WIDTH,HEIGHT),Image.NEAREST)

txt=""

for i inrange(HEIGHT):for j inrange(WIDTH):

txt+=get_char(*im.getpixel((j,i)))

txt+='\n'

print(txt)#写入文件

with open("output.txt",'w') as f:

f.write(txt)

下面我们生成数字屏幕:

生成结果:

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

可以免费领取源码、项目实战视频、PDF文件等

你可能感兴趣的:(python绘制数字)