ART_TELEPHONE = ''' ..--""""----.. .-" ..--""""--.j-. .-" .-" .--.""--.. .-" .-" ..--"-. \\/ ; .-" .-"_.--..--"" ..--' "-. : .' .' / `. \\..--"" __ _ \\ ; :.__.-" \\ / .' ( )"-. Y ; ;: ( ) ( ). \\ .': /:: : \\ \\ .'.-"\\._ _.-" ; ; ( ) .-. ( ) \\ " `.""" .j" : : \\ ; ; \\ bug /"""""/ ; ( ) "" :.( ) \\ /\\ / : \\ \\`.: _ \\ : `. / ; `( ) (\\/ :" \\ \\ \\ `. : "-.(_)_.' t-' ; \\ `. ; ..--": `. `. : ..--"" : `. "-. ; ..--"" ; `. "-.:_..--"" ..--" `. : ..--"" "-. : ..--"" "-.;_..--"" ''' ART_PHONE_SM1 = """ .----------------. / _H______H_ \\@, \\____/ \\____/ @, / \\ `@ | LI LI LI | ,@ | LI LI LI | ,@' | LI LI LI | ,@' | LI LI LI |@@' jgs \\ /' `----------' """ ART_ROTARY2=""" _______________ / \\ | .---------. |@ '---' .-----. '---'@ .' /6 5_4 3\\ '. @ | |7 /...\\ 2| | @ | |8 \\___/ 1| | @ | \\_9_0_)\\/ | @@ /==|_____________|@@@@ H-------------------@@ H ) || || ( @@ H / || || \\ @ H |----''---''----| =/ |_______________| """ ART_KEY = """ 8 8 8 8 ,ooo. 8a8 8a8 oP b d888a888zzzzzzzzzzzzzzzzzzzz8 8b `""^""' o___oP' """ ART_OLDPHONE = """ __ /` _`\\ | (_()| .-. \\_ _/_/ \\ ||=[_] | || | | | ||/ \\ | ||`---' / .--'||-.___.' /` .-||-. '-/`.____.`\\ jgs '.______.' """ ART_OLDPHONE2=""" _|~|/| ( | | | /_|_|\\| | | | |~| | | | | | | | |-| | | \\ | |__| |_|_ / ~-_ / ~-_ |___________| """ ART_ROTARY = """ _...----..._ ,-' ,-. `-. ,' ,-. ( 4 ) ,-. `. ,' ( 5 ) `-' ( 3 ) `. / ,-. `-',-'' ``-.`-' ,-. \\ / ( 6 ) ,' `. ( 2 ) \\ : `-' / FEUER \\ `-' : | ,-. : ________ : ,-. | |( 7 ) | |________| | ( 1 )| | `-' : ; `-' | : ,-. \\ NOTRUF / ; \\ ( 8 ) `. ,'(`. / \\ `-' ,-.`-..__..-' \\ `-./ `. ( 9 ) ,-. \\ ,' `. `-' ( 0 ) ,'` `-._ `-' _.-' ```----''' SSt """ ART_PHONE_DIAGRAM = """ ________ .' / / ) / /##/ /| / `--' / | /__ __ __ / | //_//_//_// / __ //_//_//_// / \\`.___ Listening end //_//_//_// / //_//_//_// /__ / / / \\`.___ Buttons / .-. / / / /#/ / / / `-' / /__ / .====. / / \\`.___ Speaking end |`--------' / \\ , .'__ `-//----' \\`.___ Disconnect button // """ ART_OLDPHONE3 = """ __ _ .: .' '. /: / \\_ ;: ; ,-'/`:\\ |: | | |():| ;: ; '-.\\_:/ \\: \\ /` ':_'._.' || /__\\ .---. {====} .' _,"-,__|:: | / ((O)=;--.:: | ; `|: | |:: | | |: | |:: | | |: | |:: | | |: | |:: | | |: | |:: | | |: | |:: | | /:'__\\ |:: | | [______]|:: | | `----` |:: |__ | _.--|:: | ''--._ ; .' __{====}__ '. \\ .'_.-'._ `""` _.'-._ '. '--'/` `''''` `\\ '.__ jgs '._ _.' `""--......--""` """ ART_OLDPHONE4 = """ __ /` _`\\ | (_()| .-. \\_ _/_/ \\ ||=[_] | || | | | ||/ \\ | ||`---' / .--'||-.___.' /` .-||-. '-/`.____.`\\ '.______.' """ # by jgs ART_PAYPHONE = """ _________________ / __ \\ | (__) | | | | .-----. .--. | | | | / \\ | | '-----' \\ / | | | | | | LI LI LI | | | | LI LI LI | | |Oo | LI LI LI | | |`Oo | LI LI LI | | | Oo | | | | Oo | .------. / \\ | oO | | | \\ / | Oo | '------' '-oO | oO | .---Oo | Oo | || ||`Oo oO | |'--'| | OoO | '----' | jgs \\_________________/ """ ART_HAMMER = """ , /( ___________ | >:===========` )( "" """ ART_KEY_PAIR = """ __ /o \\_____ \__/-="="` __ / o\\ \_ / <| <| <| ` """ ART_KEY_PAIR2 = """ __ /o \\_____ \__/-="="` __ (public) / o\\ \_ / <| <| <| (private) """ ART_KEY_PAIR2A = """ __ /o \\_____ \__/-="="` __ (1) public key / o\\ \_ / <| <| <| """ ART_KEY_PAIR2B = """ __ /o \\_____ \__/-="="` __ / o\\ \_ / <| <| <| (2) private key """ ART_KEY_PAIR2BC = """ __ /o \\_____ \__/-="="` __________ __ | | / o\\ | | \_ / | | <| | | <| | | <| | |__________| """ CUBE = """ +--------------+ /| /| / | / | *--+-----------* | | | | | | | | | | | | | | +-----------+--+ | / | / |/ |/ *--------------* """ CUBEKEY = """ +--------------+ /| /| / | / | *--+-----------* | | | / o\\ | | | | \_ / | | | | <| | | | +----<|-----+--+ | / <| | / |/ |/ *--------------* """ ART_KEY_PAIR2Bz = """ __ /o \\_____ \__/-="="` __ (1) public key / o\\ \_ / <| <| <| (2) private key """ ART_KEY_PAIR_SPLITTING1 = """ _ /o \ < < < (2A) symmetric encryption key, from hashed passphrase """ ART_KEY_PAIR_SPLITTING2 = """ _ __ /o / o\\ \ \_ / < --(encrypts)--> <| < <| < <| (2A) (2) symmetric asymmetric encryption private key, from key hashed passphrase """ ART_KEY_PAIR_SPLITTING3 = """ _ __ _ /o / o\\ \\ \ \_ / / < --(encrypts)--> <| --(into)--> | < <| | < <| | (2A) (2) (2B) symmetric asymmetric encrypted form encryption private of (2) key, from key hashed passphrase """ ART_KEY_PAIR_SPLITTING4 = """ _ _ /o \\ \ / < | < | < | (2A) (2B) symmetric encrypted form encryption of (2) key, from hashed passphrase """ ART_KEY_PAIR_SPLITTING5 = """ _ \\ / | | | (2B) encrypted form of (2) """ ART_KEY_PAIR32 = """ __ /o \\_____ \__/-="="` _ _ (1) public key /o \\ \ _ / < | < | < | (2B) privkey_encr (2A) privkey_decr """ ART_KEY_PAIR3A2 = """ __ /o \\_____ \__/-="="` _ _ (1) public key /o \\ \ _ / < | < | < | """ ART_KEY_KEY2A = """ _ /o \ < < < """ ART_KEY_PAIR3B2 = """ __ /o \\_____ \__/-="="` _ _ /o \\ \ _ / < | < | < | (2B) privkey_encr """ ART_KEY_PAIR3C2 = """ __ /o \\_____ \__/-="="` _ _ (1) public key /o \\ \ _ / < | < | < | (2B) privkey_encr (2A) privkey_decr """ ART_KEY_PAIR3 = """ __ /o \\_____ \__/-="="` _ _ (1) public key /o \\ \ _ / < | < | < | (2B) privkey_encr (2A) privkey_decr """ ART_KEY_PAIR4 = """ __ /o \\_____ \__/-="="` _ \\ _ / | | | (2B) privkey_encr (2A) privkey_decr """ ART_KEY_PAIR4Z = """ __ /o \\_____ \__/-="="` _ \\ _ / | | | (2A) privkey_decr """ ART_KEY_PAIR4D = """ _ \\ _ / | | | (2B) privkey_encr (2A) privkey_decr """ ART_KEY_PAIR4C = """ _ \\ _ / | | | (2A) privkey_decr """ ART_KEY_PAIR4B = """ _ \\ _ / | | | """ ART_KEY_PAIR31A = """ __ /o \\_____ \__/-="="` (1) public key""" ART_KEY_PAIR3A = """ __ /o \\_____ \__/-="="`""" ART_KEY_PAIR3B = """ _ _ /o \\ \ _ / < | < | < | (2A) (2B) encrypted encryption form of (2) key for (2B) """ ART_KEY_PAIR5 = """ __ /o \\_____ \__/-="="` (1) public key _ _ /o \\ \ _ / < | < | < | (2A) (2B) encrypted encryption form of (2) key for (2B) """ ART_KEY_PAIR4Z1 = """ __ /o \\_____ \__/-="="` (1) public key _ \\ _ / | | | (2B) encrypted form of (2) """ ART_KEY_PAIR4ZZ = """ __ /o \\_____ \__/-="="` _ \\ _ / | | | """ ART_KEY_PAIR4Z2 = """ __ /o \\_____ \__/-="="` (1) public key """ # """ ART_KEY_PAIR4Z3 = """ __ /o \\_____ \__/-="="` (1) public key """ ART_KEY_PAIR4Z3 = """ __ /o \\_____ \__/-="="` (1) public key """ ART_KEY_PAIR4Z42 = """ """ ART_KEY_PAIR4Z4B = """ __ / o\\ \_ / <| <| <| """ ART_KEY_PAIR4Z4 = """ __ / o\\ \_ / <| <| <| """ ART_KEY_PAIR3BB = """ _ \\ _ / | | | (2A) (2B) encrypted encryption form of (2) key for (2B) """ ART_KEY_PAIR3AA = """ _ _ /o \\ \ _ / < | < | < | """ ART_KEY_PAIR_SEP = """ __ /o \\_____ \__/-="="` __ / o\\ \_ / <| <| <| ` """ ART_KEY_CHAIN = """ ___________ @ @ / (@\\ @ \___________/ _@ @ _/@ \\_____ @/ \__/-="="` \_ / <| <| <| ` """ ART_FROG_BLENDER =""" ___ _______|___|______ __|__________________| \ ]________________[ `---. `. ___ L | _ | L | | .'_`--.___ __ | | | |( 'o` - .`.'_ ) | F F | `-._ `_`./_ | / / J '/\\ ( .'/ )F.' / L ,__//`---'`-'_/J .' J /-' '/ F.' L ' J' J `.`-. .-'.' F L `.-'.-' J |__(__(___)__| F J J L |______________| """ #### # code ### from PIL import Image ASCII_CHARS = [ '#', ' ', '%', '.', 'S', '+', '.', '*', ':', ',', '@'] def scale_image(image, new_width=100): """Resizes an image preserving the aspect ratio. """ (original_width, original_height) = image.size aspect_ratio = original_height/float(original_width) new_height = int(aspect_ratio * new_width) new_image = image.resize((new_width, new_height)) return new_image def convert_to_grayscale(image): return image.convert('L') def map_pixels_to_ascii_chars(image, range_width=25): """Maps each pixel to an ascii char based on the range in which it lies. 0-255 is divided into 11 ranges of 25 pixels each. """ pixels_in_image = list(image.getdata()) pixels_to_chars = [ASCII_CHARS[pixel_value//range_width] for pixel_value in pixels_in_image] return "".join(pixels_to_chars) def convert_image_to_ascii(image, new_width=100): image = scale_image(image) image = convert_to_grayscale(image) pixels_to_chars = map_pixels_to_ascii_chars(image) len_pixels_to_chars = len(pixels_to_chars) image_ascii = [pixels_to_chars[index: index + new_width] for index in range(0, len_pixels_to_chars, new_width)] return "\\n".join(image_ascii) def handle_image_conversion(image_filepath): image = None try: image = Image.open(image_filepath) except Exception as e: # print "Unable to open image file {image_filepath}.".format(image_filepath=image_filepath) # print e return image_ascii = convert_image_to_ascii(image) print(image_ascii) if __name__=='__main__': import sys image_file_path = sys.argv[1] handle_image_conversion(image_file_path)