Skip to main content

image-slide

Python 3.8+ License: MIT

A comprehensive Python image viewer for multidimensional numpy arrays with interactive controls for navigation, contrast adjustment, and complex data visualization.

image-slide Demo

Features

Core Functionality

  • Multi-dimensional array support: View numpy arrays of arbitrary dimensions and shapes
  • Image navigation: Slider-based navigation through image stacks
  • Complex array support: Display magnitude, phase, real, or imaginary parts
  • Interactive controls: Contrast, brightness, and colormap adjustment
  • Keyboard shortcuts: Fast navigation with arrow keys
  • Professional interface: Compact layout with all controls accessible

Display Controls

  • Contrast adjustment: 0.1x to 3.0x multiplication
  • Brightness adjustment: -1.0 to +1.0 offset
  • Colormap selection: 11 built-in colormaps (gray, viridis, plasma, etc.)
  • Auto-contrast: Automatic contrast adjustment based on percentiles
  • Reset function: Restore all settings to defaults

Navigation

  • Mouse: Use the slider to navigate between images
  • Keyboard shortcuts:
    • ←/→: Previous/next image
    • Page Up/Down: Jump by 10 images
    • Home/End: Go to first/last image

Installation

From PyPI (when published)

pip install image-slide

From Source

git clone https://github.com/GyroTools/image-slide.git
cd image-slide
pip install -e .

Dependencies

  • Python 3.8+
  • numpy >= 1.19.0
  • matplotlib >= 3.3.0

Quick Start

Basic Usage

import numpy as np
from image_slide import ImageSlideViewer

# Create or load your numpy array of arbitrary shape
image_stack = np.random.random((10, 100, 100))

# Create and run viewer
viewer = ImageSlideViewer(image_stack, "My Images")
viewer.run()

Convenience Function

from image_slide import image_slide

# Even simpler - direct function call
image_slide(image_stack, "My Images")

Complex Arrays

# Complex array example
n_images, height, width = 5, 100, 100
complex_stack = np.random.random((n_images, height, width)) + 1j * np.random.random((n_images, height, width))

viewer = ImageSlideViewer(complex_stack, "Complex Data")
viewer.run()

Loading from Files

# Load from numpy file
data = np.load('your_data.npy')
image_slide(data, "Loaded Data")

# Load multiple images into stack
import glob
from PIL import Image

files = glob.glob("*.png")
images = [np.array(Image.open(f)) for f in files]
image_stack = np.array(images)
image_slide(image_stack, "Image Stack")

Input Requirements

Data Types

  • Real arrays: Any numeric numpy dtype (int, float, etc.)
  • Complex arrays: complex64, complex128 with magnitude/phase/real/imaginary display options
  • Normalized: Data is automatically normalized for display

Advanced Usage

Complex Array Display Modes

When working with complex arrays, you can choose what to display:

  1. Magnitude: |z| - Shows the amplitude
  2. Phase: arg(z) - Shows the phase angle
  3. Real: Re(z) - Shows the real part
  4. Imaginary: Im(z) - Shows the imaginary part

Programmatic Control

# Create viewer but don't show immediately
viewer = ImageSlideViewer(image_stack, "My Images")

# Set initial display parameters
viewer.contrast = 1.5
viewer.brightness = 0.2
viewer.current_complex_display = "phase"  # for complex arrays

# Update display and show
viewer.update_display()
viewer.run()

Keyboard Shortcuts Reference

Key Action
← Previous image
→ Next image
Page Up Jump back 10 images
Page Down Jump forward 10 images
Home Go to first image
End Go to last image

Interface Components

  • Top Controls: Contrast, brightness, colormap, and action buttons arranged horizontally
  • Image Display: Central area with no borders, maximum space utilization
  • Bottom Navigation: Image slider and index display
  • Status Bar: Min/max values and data type information

Examples

Scientific Data Visualization

import numpy as np
from image_slide import image_slide

# Simulate time series data
t = np.linspace(0, 4*np.pi, 50)
x, y = np.meshgrid(np.linspace(0, 2*np.pi, 100), np.linspace(0, 2*np.pi, 100))
time_series = np.array([np.sin(x + t[i]) * np.cos(y + t[i]) for i in range(len(t))])

image_slide(time_series, "Time Series Visualization")

Medical Imaging

# Simulate medical image stack (e.g., CT slices)
slices = np.random.random((30, 256, 256))
# Add some structure
for i, slice_img in enumerate(slices):
    slices[i] = gaussian_filter(slice_img, sigma=2)

image_slide(slices, "Medical Image Stack")

Fourier Transform Analysis

# Create test pattern and its FFT
pattern = np.sin(2*np.pi*x*3) * np.cos(2*np.pi*y*2)
fft_data = np.fft.fftshift(np.fft.fft2(pattern))

# Stack original and FFT for comparison
combined = np.array([pattern, np.abs(fft_data), np.angle(fft_data)])
image_slide(combined, "FFT Analysis")

Command Line Usage

The package is designed to be used as a Python library. Import and use the viewer in your Python scripts as shown in the examples above.

Development

Setting up Development Environment

git clone https://github.com/GyroTools/image-slide.git
cd image-slide
pip install -e ".[dev]"

Running Tests

pytest

Code Formatting

black image_slide/

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

Version 1.0.0

  • Initial release
  • Basic image navigation and display
  • Complex array support
  • Contrast and brightness controls
  • Multiple colormap options
  • Keyboard shortcuts
  • Professional compact interface

Acknowledgments

  • Built with matplotlib for image display
  • Uses tkinter for GUI
  • Inspired by scientific image analysis workflows

Support

Metadata

Release files for image-slide 1.0.1

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

Source distribution (sdist)

Source distribution for image-slide 1.0.1
File Size Uploaded Provenance Actions
image_slide-1.0.1.tar.gz 15.3 kB With provenance Details for image_slide-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for image-slide 1.0.1
File Interpreter ABI Platform Actions
image_slide-1.0.1-py3-none-any.whl Python 3 none any Details for image_slide-1.0.1-py3-none-any.whl

Total release size: 27.6 kB

Release files / image_slide-1.0.1.tar.gz

Download URL image_slide-1.0.1.tar.gz
Size 15.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a7c893fd14b82874ed8b14d7780478e7a272fb23e8826bb8a74b5850037f24f8
BLAKE2b-256 checksum
How to use checksums
c637377d641d500297056b473fcff592d8d71543a68adbf37c5e2e6d94855bd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2025.

Transparency log

Release files / image_slide-1.0.1-py3-none-any.whl

Download URL image_slide-1.0.1-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
938f8b9dd2f2bc000c8511a088c86681fa857cf24d55503ae7a17d55347a449d
BLAKE2b-256 checksum
How to use checksums
f11c768ecb957477e8b47ebe97c0057effb085a289224c6a4fcb1216d94aa4f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2025.

Transparency log

Security for image-slide 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for image_slide-1.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files Full provenance

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