Skip to main content

wim is a command line tool to create images for the web.

Project description

WIM - Web Image Maker

A command-line tool for creating and optimizing images for the web with text overlays, watermarks, and more.

Installation

pipx install wim

Or install from source:

git clone https://github.com/yaph/wim.git
cd wim
pip install -e .

Quick Start

# Add text overlay
wim input.jpg -t "Hello World"

# Add watermark
wim input.jpg -w logo.png

# Scale and add text
wim input.jpg -s 800 -t "Resized Image"

# Add semi-transparent watermark in top-right corner
wim photo.jpg -w logo.png --watermark-position top-right --watermark-opacity 128

Features

Text Overlays

  • Add text with semi-transparent backgrounds
  • Customize font, size, and position
  • Automatic text centering and padding

Watermarks & Overlays

  • Blend images over your photos
  • Adjust opacity for subtle watermarks
  • Scale overlays to any size
  • Position overlays anywhere (corners, center)

Image Optimization

  • Scale images to maximum dimensions
  • Quantize to reduce file size
  • Convert between formats (PNG, JPEG)
  • Automatic RGBA to RGB conversion for JPEG

Smart Defaults

  • Non-destructive by default (adds -wim to file name stems)
  • RGBA support with proper alpha blending
  • High-quality image resampling

Usage Examples

# Add text with custom font and size
wim input.jpg -t "Caption" --font times.ttf --font-size 24

# Add watermark with 50% opacity in bottom-right
wim photo.jpg -w logo.png --watermark-opacity 128

# Scale watermark to specific size
wim photo.jpg -w logo.png --watermark-scale 150 150

# Multiple operations at once
wim input.jpg -s 1200 -t "Summer 2024" -w logo.png --watermark-position top-right

# Edit image in place
wim input.jpg -i -t "Updated"

# Reduce file size with quantization
wim input.png -q

Command Line Options

wim --help
usage: wim [-h] [-i | -o OUTDIR] [--strip] [--trim] [--version] [--format {gif,png,jpeg,ico,webp,jpg,bmp}]
                             [--output-label OUTPUT_LABEL] [--quality QUALITY] [--quantize QUANTIZE] [-s WIDTH HEIGHT]
                             [--font FONT] [--font-size FONT_SIZE] [-t TEXT] [-w WATERMARK]
                             [--watermark-opacity WATERMARK_OPACITY] [--watermark-scale WIDTH HEIGHT]
                             [--watermark-position {top-left,top-right,bottom-left,bottom-right,center}]
                             filename [filename ...]

Edit, optimize, and watermark images from the command line.

positional arguments:
  filename              Input image filename. Use wildcard to process multiple files.

options:
  -h, --help            show this help message and exit
  -i, --inplace         Edit the image in place (overwrites original).
  -o OUTDIR, --outdir OUTDIR
                        Output directory for processed images.
  --strip               Strip image of all metadata.
  --trim                Trim uniform-color borders from image edges.
  --version             show program's version number and exit
  --format {gif,png,jpeg,ico,webp,jpg,bmp}
                        Set the output format. If not set, original format is used.
  --output-label OUTPUT_LABEL
                        Label to append to the output file name. Ignored if --inplace is used.
  --quality QUALITY     Output quality 1-100 (lower = smaller file). Works with JPEG and WebP.
  --quantize QUANTIZE   Quantize the image with the desired number of colors, <= 256.
  -s WIDTH HEIGHT, --scale WIDTH HEIGHT
                        Set the maximum width and height as integer values.
  --font FONT           Font name (e.g., DejaVuSans, Arial) or path to TrueType font file (.ttf), requires font size setting.
                        Falls back to system default if not specified or found.
  --font-size FONT_SIZE
                        Set the font size, requires font setting.
  -t TEXT, --text TEXT  Set the text to add to the image.
  -w WATERMARK, --watermark WATERMARK
                        Path to watermark/overlay image to add to the image.
  --watermark-opacity WATERMARK_OPACITY
                        Opacity of watermark 0-255 (default: 255).
  --watermark-scale WIDTH HEIGHT
                        Scale watermark to WIDTH HEIGHT in pixels.
  --watermark-position {top-left,top-right,bottom-left,bottom-right,center}
                        Position of watermark (default: bottom-right).

Requirements

  • Python ≥ 3.10
  • Pillow

Development

# Clone repository
git clone https://github.com/yaph/wim.git
cd wim

# Run in development mode
hatch shell wim-dev

# Run tests
hatch run qa

# Clean build artifacts
hatch run clean

License

MIT License - see LICENSE file for details

Author

Ramiro Gómez (@yaph)

Links

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

wim-2.0.0.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

wim-2.0.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file wim-2.0.0.tar.gz.

File metadata

  • Download URL: wim-2.0.0.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for wim-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7546420ae97425879b11ac825ceed0b73f76de9b1a5613e08b5985982f340000
MD5 d86072e8211296cf0b54608f73f5a570
BLAKE2b-256 cdd70eb6234f0c0bc54050b44bbdbf91c3c1d0de6f81327a166645a390750d9a

See more details on using hashes here.

File details

Details for the file wim-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: wim-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for wim-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49909b9cee271b572ef5608d3b6e4b96f45e5f354ee8ea0211841642d49b66f3
MD5 6f2b2a8cdc2c41af3e4f2d723e06e08b
BLAKE2b-256 36e29a760533953012a29604a02fe81fc3ed8ce079ec618cd7a3f114f8154ffe

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