実験室の建物からの転送:https://www.shiyanlou.com/courses/370/learning/?id=1191
コード:
#- * -コーディング:UTF-8 - * - から PIL インポート画像 のインポートargparse #作成インスタンスArgumentParser パーサ= argparse.ArgumentParser() #入力ファイル、出力ファイル、出力文字幅とドローの高さを定義 parser.add_argument(" ファイルを')#必須パラメータ。1 parser.add_argumentを(' -o ' ' --output ') #オプションのパラメータ2 parser.add_argument(' --width '、= int型、デフォルト= 80) #オプションのパラメータ3 parser.add_argument(「--height' = int型、デフォルト= 80) #オプションパラメータ4 #の解析及びパラメータ取得 引数の= parser.parse_args() #1 に入力された画像ファイルパス IMG = args.file #の入力文字絵を幅 WIDTH = args.width #ビデオ入力文字高さ HEIGHT = args.height #の出力パス文字塗装 出力= args.output #RGB値に第1階調値を、次にグレー値を使用して、文字リストの文字にマッピングされ ascii_char =リスト(" $する@ B%8&WMの#* oahkbdpqwmZO0QLCJUYXzcvunxrjft / \ |(1){} [] -_ +〜<> I LI;:。、\?!。" ^ ` ' " ) DEF GET_CHAR(R&LT、G、B、アルファ= 256 ): #分析アルファ値 IFアルファ==0: リターン ' ' #は文字セットの長さ取得 長= LEN(ascii_char) #の0~255のグレー、グレー値範囲にRGB値を グレー= INT(R&LT 0.2126 * 0.7152 * G + 0.0722 * + B) #グレー値0〜255の範囲が、わずか70文字 #が開発文字マップに階調値にプロセスを必要 UINT =(256.0 + 1)/ 長 #1 文字に対応するリターン階調値を 返す [ascii_charをINT(グレー/ UINT)] IF __name__ == ' __main__ ' : #オープンと画像の幅と高さ調整 IM = Image.open(IMG) IM = im.resize((幅、高さ)、Image.NEAREST) #初期化文字列出力 TXT = "" #は、画像内の各ラインを横断 するための I における範囲(高さ) のために J で:レンジ(幅) TXT + = GET_CHAR(* im.getpixel((J、I))) #後の各行を改行を追加する必要があり TXT + = ' \ N- ' #の画面への出力 を印刷(TXT) #のファイルに文字絵の出力を IF 出力: オープン(OUTPUT、との' W ' :F AS) f.write(TXT ) それ以外: オープン(との「output.txtと」、' W ' :Fなど) )f.write(TXT
結果: