python - Comment comprendre le fonctionnement de la conversion des valeurs RVB en caractères dans PIL
高洛峰
高洛峰 2017-06-12 09:26:11
0
2
816
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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
我想大声告诉你

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal