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'
Comment comprendre les données transmises dans la fonction get_char par get_char(*im.getpixel((j,i))), à quelle variable cela appartient-il et quel est le principe de fonctionnement de cette fonction
Dans la boucle for, im.getpixel((j,i) fait référence à l'obtention de la valeur RVB de chaque pixel de coordonnées correspondant. Vous pouvez obtenir la valeur d'une coordonnée fixe, puis l'imprimer pour voir
En fait, RVB possède son propre système théorique, qui met en œuvre uniquement les opérations correspondantes par le calcul des pixels. Pour faire simple, pour donner un exemple simple, tel que (255, 255, 255), nous convertissons les nombres ci-dessus en hexadécimal, qui sont FF, FF, FF. Une fois épissé, il devient #FFFFF.