TinyIIIF is a small tinyhttp implementation of a node-iiif server. It is intended as a no-frills example that can also serve as a development server.
$ npm run tiny-iiif$ IIIF_IMAGE_PATH=/path/to/iiif/images npm run tiny-iiifIIIF_IMAGE_PATH: The base path where images to be served are storedIMAGE_FILE_TEMPLATE: The template string for translating an image ID into its path relative toIIIF_IMAGE_PATH. (Default:{{id}}.tif)PORT: The port the server should listen on (Default:3000)
$ docker build -t tiny-iiif .
$ docker run --rm -ti -v /path/to/iiif/images:/data --publish 3000:3000 tiny-iiif
The IMAGE_FILE_TEMPLATE can be specified by using Docker's -e (or --env) parameter:
$ docker run --rm -ti -e IMAGE_FILE_TEMPLATE={{id}}.jpg -v /path/to/iiif/images:/data -p 3000:3000 tiny-iiif
# docker-compose.yml
---
version: "3.9"
services:
iiif:
build: .
ports:
- "3000:3000"
volumes:
- "/path/to/iiif/images:/data"
environment:
IMAGE_FILE_TEMPLATE: "{{id}}.pyramid.tif"As of the current Unreleased changes, the streamResolver must be an async function that returns a Promise<Readable>.
- Old (sync):
function streamResolver({ id }) { return fs.createReadStream(pathFor(id)); }
- New (async):
async function streamResolver({ id }) { return fs.createReadStream(pathFor(id)); } // or: ({ id }) => Promise.resolve(fs.createReadStream(pathFor(id)))
The two-argument callback form is still supported for now, but is deprecated. Prefer the promise-based resolver.