在网上经常会看到各种图片经过处理之后得出各种各样的支付画,非常有意思,于是我上手尝试了一下,效果还是挺不错的,原理也非常简单。
1.字符画的原理:
就是把每个字符看成一个像素,一个字符代表一种颜色,字符越多,颜色越丰富
2.通过RGB获得灰度值:
灰度值是指黑白图像中点的颜色深度,黑色255,白色0,灰度值介于这之间。
RGB:red红 green绿 blue蓝 通过调节这3个原色获得其他颜色
可以使用灰度值公式将像素的 RGB 值映射到灰度值,这个公式不是一个真实的算法,而是简化的 sRGB IEC61966-2.1公式,具体如下:
grey = 0.2126 * r + 0.7152 * g + 0.0722 * b
3.具体实操如下代码所示:
from PIL import Image
#字符数组
char = list('abcdg1234,./-+; ')
def get_char(r,g,b,alpha=256):
if alpha ==0:
return ' '
#RGB转灰度值公式
grey = 0.2126 * r + 0.7152 * g + 0.0722 * b
#获得列表的索引
i = int((grey / (alpha + 1.0)) * len(char))
return char[i]
#