Skip to content

ryanfowler/imaged

Repository files navigation

imaged

A high-performance HTTP server for on-the-fly and batch image processing. Upload an image or provide a URL, and imaged will resize, convert, apply effects, or extract metadata in milliseconds.

Built with Bun and powered by Sharp/libvips for fast, memory-efficient processing.

Features

  • Transform images — Resize, crop, blur, convert formats, and apply effects
  • Extract metadata — Dimensions, EXIF data, image statistics, and thumbhash placeholders
  • Batch processing — Process one image into multiple outputs and upload to S3
  • Production ready — Configurable concurrency, request limits, TLS, and structured logging

Quick Start

Docker

docker pull ghcr.io/ryanfowler/imaged:latest
docker run -p 8000:8000 ghcr.io/ryanfowler/imaged:latest

From Source

git clone https://github.com/ryanfowler/imaged.git
cd imaged && bun install
bun run index.ts

Try It Out

# Resize to 400px wide, convert to WebP
curl -X PUT "http://localhost:8000/transform?width=400&format=webp" \
  --data-binary @photo.jpg -o thumbnail.webp

# Get image dimensions and EXIF data
curl -X PUT "http://localhost:8000/metadata?exif=true" \
  --data-binary @photo.jpg

# Apply blur and greyscale
curl -X PUT "http://localhost:8000/transform?blur=true&greyscale=true" \
  --data-binary @photo.jpg -o blurred.jpg

Documentation

API Reference

  • Transform — Resize, convert, crop, blur, and apply effects
  • Metadata — Extract dimensions, EXIF, stats, and thumbhash
  • Pipeline — Batch processing with S3 upload

Guides

Health Check

curl http://localhost:8000/healthz

Which returns general server information like:

{
  "version": "0.2.0",
  "runtime": "Bun 1.3.6",
  "sharp": "0.34.5",
  "vips": "8.17.3",
  "decoders": ["avif", "gif", "jpeg", "png", "svg", "tiff", "webp"],
  "encoders": ["avif", "gif", "jpeg", "png", "raw", "tiff", "webp"]
}

Supported Formats

The supported formats depends on the libvips that you are using. If you are using the bundled libvips, the supported formats are:

Input: AVIF, GIF, JPEG, PNG, SVG, TIFF, WebP

Output: AVIF, GIF, JPEG, PNG, RAW, TIFF, WebP

If using a globally installed libvips, your server may support:

Input: AVIF, GIF, HEIC, JPEG, JPEG XL, PDF, PNG, SVG, TIFF, WebP

Output: AVIF, GIF, HEIC, JPEG, JPEG XL, PNG, RAW, TIFF, WebP

License

MIT

About

Image proxy service

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5

Languages