Переход от лабораторного корпуса: https://www.shiyanlou.com/courses/370/learning/?id=1191
Код:
# - * - Coding:. UTF - 8 - * - от в PIL Импорт изображений Импорт argparse # Создание экземпляра ArgumentParser Parser = argparse.ArgumentParser () # определить входной файл, выходной файл, ширина выходного символа и высоту раздаточного parser.add_argument ( ' File ' ) # обязательные параметры. 1 parser.add_argument ( ' -o ' ' --output ' ) # необязательный параметр 2 parser.add_argument ( ' --width ' , = INT тип, по умолчанию = 80) # необязательные параметры 3 parser.add_argument ( ' --height' , = Тип Int, по умолчанию = 80) # необязательные параметры 4 # синтаксического анализа и получить параметр арг = parser.parse_args () # путь к файлу входного изображения , чтобы в = IMG args.file # входного символа картины ширина ШИРИНА = args.width # Видео вход высота символов Height = args.height # путь вывод символы картина выходного = args.output # первых значений градации в значение RGB, а затем использовать значение серого отображаются на символ в списке символов ascii_char = список ( " $ @ B% 8 и ВМ # * oahkbdpqwmZO0QLCJUYXzcvunxrjft / \ | () 1 {} [] -_ + ~ <> I Lī;:.., \?!." ^ '' " ) DEF GET_CHAR (R & л, G, B, Alpha = 256 ): # Анализ альфа - значение IF альфа ==0: Возвращение ' ' # Получить длину набора символов длиной = LEN (ascii_char) # значения RGB в серый, серый диапазон значений 0-255 Gray = INT (R & LT 0.2126 * 0.7152 * G + 0,0722 * + В) # серый диапазон значений 0-255, но только 70 символов # требует процесса до значения градации к развитой карте символов UINT = (256,0 +. 1) / длиной # значения градации возврата , соответствующие символам возврата ascii_char [ Int (Серый / UINT)] ЕСЛИ __name__ == ' __main__ ' : # открытым и регулировать ширину и высоту изображения IM = Image.open (IMG) IM = im.resize ((ширина, высота), Image.NEAREST) #Выход инициализации строки TXT = "" # пересекать каждую линию на картинке для ввода в диапазоне (высота): для J в диапазоне (ширина): TXT + = GET_CHAR (* im.getpixel ((J, I))) # после того, как через каждую строку нужно добавить разрыв строки TXT + = « \ n- » # вывод на экран Print (TXT) # символ выхода картины в файл IF выхода: с Open (вывод, « W » ) AS F: f.write (TXT ) еще : с Open ( " output.txt ", ' Ж ' ) , как F: f.write (TXT)
Результат: