Pythonピクチャーの文字の絵を回転します

1949 ワード

概要
文字画は一連の文字の組み合わせであり、文字を画素と理解することができ、文字が多ければ多いほど、代表的な色が複雑になり、画像も階層感がある.
本文
では、カラーの画像はどのように白黒に変換されますか?ここではまず階調値の概念を理解する必要があります
階調値:白黒画像の中点の色の深さを指し、範囲は一般的に0から255、白は255、黒は0であるため、白黒画像も階調画像と呼ばれる.
階調変換の式は次のとおりです.
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b


階調図に変換した後、各画素に1文字値を対応させ、画像からいくつかの画素をマッピングとしてとることで、文字画の変換を実現することができる.
異なる文字は異なる階調を表し、文字の種類と数は自分のニーズに合わせて調整されます.
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")  

完全なコードは次のとおりです.
#-*- coding:utf-8 -*-

from PIL import Image

IMG='/Users/huangdaju/Desktop/icon.png'

WIDTH = 60
HEIGHT = 45

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+='
' print (txt) # with open("output.txt",'w') as f: f.write(txt)

PILはPython画像処理ライブラリです.この文章の重要なツールです.
getpixel:指定した位置の画素を返し、開いた画像が多層のピクチャである場合、この方法はメタグループを返します.im.getpixel( xy ) => value or tuple.
txt += get_char(im.getpixel(j,i))という関数は、まずimを呼び出す.getpixel関数、im.getpixelのパラメータは(j,i)です.(j,i)は実は画像の横縦座標である.この関数を呼び出すことで,ピクチャの横縦座標上の色を,(r,g,b,alpha)という4つのパラメータに分割し,get_を呼び出す.charという関数.あとでget_charという関数はどのように動作しますか.def get_char(r,g,b,alpha=256):if alpha==0://alphaが0に等しい場合、すなわち画像が現在ないと判断する.return''length=len(ascii_char)/は上の文字列の長さです