20 Pythonプロジェクト - 絵ターン文字を描きます

実験室の建物からの転送: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

結果:

 

おすすめ

転載: www.cnblogs.com/xuxiaowen1990/p/11239580.html
おすすめ