在網上經常會看到各種圖檔經過處理之後得出各種各樣的支付畫,非常有意思,于是我上手嘗試了一下,效果還是挺不錯的,原理也非常簡單。
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]
#