Source code for iterm2_tools.images

"""
Functions for displaying images inline in iTerm2.

See https://iterm2.com/images.html.
"""
from __future__ import print_function, division, absolute_import

import sys
import os
import base64

IMAGE_CODE = '\033]1337;File=name={name};inline={inline};size={size}:{base64_img}\a'

[docs]def display_image_bytes(b, filename=None, inline=1): """ Display the image given by the bytes b in the terminal. If filename=None the filename defaults to "Unnamed file". """ data = { 'name': base64.b64encode((filename or 'Unnamed file').encode('utf-8')).decode('ascii'), 'inline': inline, 'size': len(b), 'base64_img': base64.b64encode(b).decode('ascii'), } return (IMAGE_CODE.format(**data))
# Backwards compatibility
[docs]def image_bytes(b, filename=None, inline=1): """ **DEPRECATED**: Use display_image_bytes. """ return display_image_bytes(b, filename=filename, inline=inline)
[docs]def display_image_file(fn): """ Display an image in the terminal. A newline is not printed. """ with open(os.path.realpath(os.path.expanduser(fn)), 'rb') as f: sys.stdout.write(display_image_bytes(f.read(), filename=fn))