天天看點

python基礎項目實戰--圖檔轉字元

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

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]

#