python pillow Image画像を文字画像に変換


pythonで画像を文字画像に変換し、多くの先輩がやったことを、先輩たちの足どりを踏んで、Pythonで何かをやってみたり、pythonへの理解を強化したりします
画像をビット文字列に変換するにはpillowのImageモジュールを導入する必要があります
Open()関数を使用してピクチャファイルを読み込む
>>>im = Image.open(r"C:\Users\Administrator\1pthw\r11.png")
>>>print(im)

mode=RGBA:modeは画像の画素と深さを表し、通常は真彩「RGB」と階調「L」がある
size=153 x 153:sizeは画像のwidthとheightを表す二元tupleである
Image.show():画像表示
Image.resize((WIDTH,HEIGHT),Image.NEAREST):新しいピクチャピクセルサイズ
Image.rotate(45):時計回りに回転
cmyk = im.convert("CMYK")
gray = im.convert(「L」):色変換
image.thumbnail(size,Image.ANTIALIAS):圧縮画像
Image.getpixel():指定された位置のピクセル値を返します.
多くの人が作った画像を文字図に変換した例です
from PIL import Image
# argparse            
import argparse

#          
parser = argparse.ArgumentParser()
#     
parser.add_argument('file')
#     
parser.add_argument('-o', '--output')
#       
parser.add_argument('--width', type = int, default =80)
#       
parser.add_argument('--height', type = int, default = 80)

#     
args = parser.parse_args()

#    
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

#    
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

#    ,a,g,b    ,alpha    
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(gary/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) # if OUTPUT: with open(OUTPUT, 'w') as f: f.write(txt) else: with open("output.txt", 'w') as f: f.write(txt)

Argparseの役割はpyファイルに選択可能なパラメータをカプセル化することです
parser = argparse.ArgumentParser():コマンドライン解析器を作成する
parser.add_Argument():Argparseにコマンドパラメータを追加し、オプションのコマンドラインオプションを指定します.