python图片转字符画代码_python实现图片转字符画的完整代码

前言

最初是在实验楼看到的一个小实验

原文是需要通过命令行运行程序

这里改为直接运行,需要固定一些参数

运行平台: windows

python版本: python3.6

ide: sublime text

1、实验准备

pillow库的安装

pip install pillow

2、实验原理

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

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

灰度值:指黑白图像中点的颜色深度,范围一般从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;:,\"^`'. ")

3、完整代码

#-*- coding:utf-8 -*-

from pil import image

img='d:\code\python\\test1\\ascii_dora.png'

width=60

height=45

ascii_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)/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)))

txt+='\n'

print (txt)

#写入文件

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

f.write(txt)

4、结果

2b704f227abd2ef521dcba0750d842ac.png

总结

到此这篇关于python实现图片转字符画的文章就介绍到这了,更多相关python图片转字符画内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值