From 45ff44d240a2ff4f13c474386afb6f31b6704324 Mon Sep 17 00:00:00 2001 From: Joseph Hallett Date: Thu, 30 Jul 2015 23:28:23 +0100 Subject: [PATCH] Added flag to enable higher resolution printing Restores the default behavior if no flags are added --- rainbowstream/c_image.py | 30 +++++++++++++++++++++--------- rainbowstream/rainbow.py | 11 ++++++++++- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/rainbowstream/c_image.py b/rainbowstream/c_image.py index e1bdae4..a1395f3 100644 --- a/rainbowstream/c_image.py +++ b/rainbowstream/c_image.py @@ -24,10 +24,12 @@ def call_c(): rgb2short = call_c() -def pixel_print(ansicolor): +def pixel_print(pixel): """ Print a pixel with given Ansi color """ + r, g, b = pixel[:3] + ansicolor = rgb2short(r, g, b) sys.stdout.write('\033[48;5;%sm \033[0m' % (ansicolor)) @@ -63,17 +65,27 @@ def image_to_display(path, start=None, length=None): i.load() width = min(w, length) height = int(float(h) * (float(width) / float(w))) + if c['HIGHER_RESOLUTION'] is False: + height //= 2 i = i.resize((width, height), Image.ANTIALIAS) height = min(height, c['IMAGE_MAX_HEIGHT']) - for real_y in xrange(height // 2): - sys.stdout.write(' ' * start) - for x in xrange(width): - y = real_y * 2 - p0 = i.getpixel((x, y)) - p1 = i.getpixel((x, y+1)) - block_print(p1, p0) - sys.stdout.write('\n') + if c['HIGHER_RESOLUTION'] is True: + for real_y in xrange(height // 2): + sys.stdout.write(' ' * start) + for x in xrange(width): + y = real_y * 2 + p0 = i.getpixel((x, y)) + p1 = i.getpixel((x, y+1)) + block_print(p1, p0) + sys.stdout.write('\n') + else: + for y in xrange(height): + sys.stdout.write(' ' * start) + for x in xrange(width): + p = i.getpixel((x, y)) + pixel_print(p) + sys.stdout.write('\n') """ diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index cf25883..a5cc190 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -72,6 +72,11 @@ def parse_arguments(): '--color-24bit', action='store_true', help='Display images using 24bit color codes.') + parser.add_argument( + '-hr', + '--higher-resolution', + action='store_true', + help='Display images in high(er) resolution.') parser.add_argument( '-ph', '--proxy-host', @@ -238,8 +243,12 @@ def init(args): c['message_dict'] = [] # Image on term c['IMAGE_ON_TERM'] = args.image_on_term - c['24BIT'] = args.color_24bit set_config('IMAGE_ON_TERM', str(c['IMAGE_ON_TERM'])) + # Use 24 bit color + c['24BIT'] = args.color_24bit + # Print images using half height blocks + c['HIGHER_RESOLUTION'] = args.higher_resolution + set_config('HIGHER_RESOLUTION', str(c['HIGHER_RESOLUTION'])) # Check type of ONLY_LIST and IGNORE_LIST if not isinstance(c['ONLY_LIST'], list): printNicely(red('ONLY_LIST is not a valid list value.')) -- 2.25.1