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'
Bagaimana untuk memahami data yang dihantar ke dalam fungsi get_char oleh get_char(*im.getpixel((j,i))), apakah pembolehubah ini dimiliki, dan apakah prinsip operasi fungsi ini
Dalam gelung for, im.getpixel((j,i) merujuk kepada mendapatkan nilai rgb setiap piksel koordinat yang sepadan. Anda boleh mendapatkan nilai koordinat tetap dan kemudian mencetaknya untuk melihat
Malah, RGB mempunyai sistem teorinya sendiri, yang hanya melaksanakan operasi yang sepadan melalui pengiraan piksel. Secara ringkasnya, untuk memberikan contoh mudah, seperti (255, 255, 255), kita menukar nombor di atas kepada perenambelasan, iaitu FF, FF, FF. Apabila disambung ia menjadi #FFFFF.