Skip to main content

Lightweight image gallery server - no database, no files left behind

Project description

Lenslet

A lightweight image gallery server that runs entirely in-memory. Point it at a directory of images and browse them in your browser. No database, no metadata files left behind.

Introduction

image

Lenslet is a self-contained image gallery server designed for simplicity and speed. It indexes directories on-the-fly, generates thumbnails in memory, and serves everything through a clean web interface. Perfect for quickly browsing local image collections without modifying the source directory.

Features

  • Clean operation: No files written to your image directories
  • In-memory indexing: Fast directory scanning and caching
  • On-demand thumbnails: Generated and cached in RAM
  • Full web UI: Browse, search, and view images in your browser
  • Metadata support: Add tags, notes, and ratings (session-only)
  • Single command: Just point to a directory and go

Installation

pip install lenslet

Usage

Command Line Interface

lenslet /path/to/images

Then open the URL printed in the terminal (default http://127.0.0.1:7070, or the next available port).

Options:

lenslet <directory> [options]

Options:
  -p, --port PORT              Port to listen on (default: 7070; auto-increment if in use)
  -H, --host HOST              Host to bind to (default: 127.0.0.1)
  --thumb-size SIZE            Thumbnail short edge in pixels (default: 256)
  --thumb-quality QUALITY      Thumbnail WebP quality 1-100 (default: 70)
  --reload                     Enable auto-reload for development
  --share                      Create a public share URL via cloudflared
  --verbose                    Show detailed server logs
  -v, --version                Show version and exit

Examples:

# Serve images from your Pictures folder
lenslet ~/Pictures

# Use a custom port
lenslet ~/Photos --port 8080

# Make accessible on local network
lenslet ~/Images --host 0.0.0.0 --port 7070

# Create a public share URL (prints a trycloudflare.com link)
lenslet ~/Images --share

Programmatic API (Python/Jupyter)

Launch lenslet directly from Python code or notebooks:

import lenslet

datasets = {
    "my_images": ["/path/to/img1.jpg", "/path/to/img2.jpg"],
    "more_images": [
        "s3://bucket/img3.jpg",           # S3 URIs
        "https://example.com/img4.jpg",   # HTTP/HTTPS URLs
    ],
}

# Launch in non-blocking mode (returns immediately)
lenslet.launch(datasets, blocking=False, port=7070)

Key Features:

  • 🚀 Jupyter-friendly: Non-blocking mode for notebooks
  • ☁️ S3 support: Automatically handles S3 URIs via presigned URLs
  • 📁 Multiple datasets: Organize images into named collections
  • 🔗 Mixed sources: Combine local files and S3 images

See Programmatic API Documentation for details and examples.

Notes

  • All indexes, thumbnails, and metadata are kept in memory
  • Metadata changes (tags, ratings, notes) are lost when the server stops
  • Supports JPEG, PNG, and WebP formats
  • Hidden files and folders (starting with .) are ignored

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lenslet-0.2.3.tar.gz (474.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lenslet-0.2.3-py3-none-any.whl (133.2 kB view details)

Uploaded Python 3

File details

Details for the file lenslet-0.2.3.tar.gz.

File metadata

  • Download URL: lenslet-0.2.3.tar.gz
  • Upload date:
  • Size: 474.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for lenslet-0.2.3.tar.gz
Algorithm Hash digest
SHA256 5d17a4cf52e8e7ea017d9a3adfedfd4e8224a3e9ad843e453e616a1ad3f7239a
MD5 c1472d59d8f09bd56e94b22592f967e9
BLAKE2b-256 31f7a5d78e1876b2278f24b527737dc9c478f1c2419c60a0f85c1ee5d0fb13a0

See more details on using hashes here.

File details

Details for the file lenslet-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: lenslet-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 133.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for lenslet-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6830779c37f53f341b8e1fde82adf8759d47a48770bc7e1531c318ab29675d9a
MD5 071c9fedc898381fa50814c6cf950c6f
BLAKE2b-256 a79e8f93ea40b63c4a3df6195c06c8747a62a9cd18828042ec1a7aa29caaeb2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page