Skip to main content

Imshow

Flexible and Customizable Image Display




Imshow is a Python app to display images.

Imshow gives you:

  • Flexiblity - CLI & Python interface;
  • Customizability - visualize any data via the plugin system;
  • Fast & clean image display.

Installation

python3 -m pip install imshow

Usage

Command-Line

imshow examples/*.jpg
imshow examples --recursive  # --recursive (-r)
imshow examples -r --plugin tile --col 3  # --plugin (-p)

Python

import glob

import imgviz
import imshow

images = (imgviz.io.imread(filepath) for filepath in glob.glob("examples/*.jpg"))
imshow.imshow(images)

Builtin plugins

-p base (default)

imshow examples/*.jpg
imshow examples --recursive  # auto-search image files

-p tile

imshow examples/*.jpg -p tile --col 3 --row 3
imshow examples/*.jpg -p tile --col 3

-p mark

imshow examples/*[0-9].jpg -p mark --mark-file examples/mark.txt

How to create custom plugin

You can pass a Python file that contains class Plugin(base.Plugin) to --plugin, -p to customize the behaviour of Imshow. Below example shows a countdown from 10 to 0 displayed as images.

See plugins/base.py for the most basic example of scanning image files and displaying them. For more examples, check plugins folder.

imshow examples/*.jpg --plugin examples/countdown_plugin.py --number 10
import numpy as np
import imgviz
from imshow.plugins import base


class Plugin(base.Plugin):
    @staticmethod
    def add_arguments(parser):
        # define additional command line options
        parser.add_argument(
            "--number", type=int, default=10, help="number to count down from"
        )

    number: int

    def __init__(self, args):
        self.number = args.number

    def get_items(self):
        # convert command line options into items to visualize.
        # each item represent the chunk that is visualized on a single window.
        yield from range(self.number, -1, -1)

    def get_image(self, item):
        # convert item into numpy array
        image = np.full((240, 320, 3), 220, dtype=np.uint8)

        font_size = image.shape[0] // 2
        height, width = imgviz.draw.text_size(text=f"{item}", size=font_size)
        image = imgviz.draw.text(
            src=image,
            text=f"{item}",
            yx=(image.shape[0] // 2 - height // 2, image.shape[1] // 2 - width // 2),
            color=(0, 0, 0),
            size=font_size,
        )
        return image

License

MIT

Metadata

Release files for imshow 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imshow 0.2.4
File Size Uploaded
imshow-0.2.4.tar.gz 21.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for imshow 0.2.4
File Interpreter ABI Platform
imshow-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 21.8 MB

Release files / imshow-0.2.4.tar.gz

Download URL imshow-0.2.4.tar.gz
Size 21.8 MB
Tags Source
SHA-256 checksum
How to use checksums
ba1f89c9544c4d02fd7da424f2df558adc1a3f13476fab271095f611548978ba
BLAKE2b-256 checksum
How to use checksums
53a3abd387c00f1fbb8cfba6d9aca73394535e54d6fcfddd75b23c5b7e169d56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.2

Release files / imshow-0.2.4-py3-none-any.whl

Download URL imshow-0.2.4-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25c1ce8891ca040816f7a3a54c0945788f61416fca90d1e0ba2604e496d25c43
BLAKE2b-256 checksum
How to use checksums
eec1bf8a684eec8652fe76cfe0027d396fb62743e32fd3719257271a11cca42e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.2
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page