ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
def get_char(r,g,b,alpha = 256):
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'
如何理解get_char(*im.getpixel((j,i)))傳遞進入get_char函數的數據,這個是屬於什麼變量,這個函數的操作原理是什麼
在for迴圈中im.getpixel((j,i)是指取得每個對應座標像素的rgb值,你可以取得一個固定座標的值,然後print出來看看
實際上RGB有自己的1套理論體系,不過是透過對像素的計算實現對應的操作。簡單的說就是,舉1個簡單的例子,比如(255,255,255),我們將上述的數字轉換為16進制,為FF,FF,FF。將其拼接後為#FFFFF。