# Image server

An image server is web server software which specializes in delivering (and often modifying) images. However, not all image servers support HTTP or can be used on web sites.
While traditional web servers generally supply clients with static copies of image files, image servers usually perform additional image processing before serving the file. These functions may include frame/format selection, resizing, cropping, alpha blending, compositing source images, rotating, color adjustment, and filtering.
A major use of image servers is to support browser-based pan-and-zoom viewers. port/1188

## Concepts
### Single-source imaging

The proliferation of mobile devices, screen resolutions, and pixel densities has forced web designers to create an ever-increasing number of image variations. Image servers capable of dynamic image resizing can produce the required sizes and variations on demand, eliminating repetitive work and the room for human error.

### Declarative vs imperative

Declarative APIs (such as RIAPI) allow the client to describe resulting characteristics of the image, such as desired size, aspect ratio, rotation, fit modes, etc. Command order is not important - ?width=200&height=100 will produce the same result as ?height=100&width=200. The server is free to coalesce compatible operations to improve performance.
Imperative APIs, (such as IIP or IIIF) describe the operations to apply to the image in order, offering the user more control, but also more responsibility for calculations.

## Uses
### Dynamic tile-based delivery

Browser-based viewers for high resolution images enable a responsive pan and zoom experience by requesting small tiles (typically square JPEGs or PNGs at 256x256 or 512x512 pixels) generated from the high resolution source. Only those tiles required to render the user's current viewport and zoom level are loaded, with more requested on demand as the user zooms in to particular areas. This tile generation can be done in advance and stored on the server file system as an Image Pyramid. However, this results in potentially thousands of small JPEG files with associated storage and management overhead. An Image server can respond dynamically to HTTP requests for the tiles, generating HTTP responses (the tile images) on the fly. The server requires only the single high resolution source image.

### E-commerce

The simplest product viewers usually require at least 3 versions of an image: a 100x100 thumbnail, a 400x300 medium 'in-page, selected', and a 1200x900 'zoomed' version. Combined with the original file, this results in 4 separate images that must be stored, updated, and linked to.
In e-commerce, image servers are qualified by their abilities to scale to hundreds of thousands of images, to multiple CPUs or load-balanced server machines, and to the quantity and quality of their image processing functionalities, such as resizing, compositing, zoom and 3D viewers, and the addition of dynamic data to the images in the form of overlaid text or graphics.
Dynamic compositing is also extremely useful for merchants who permit product customization. Many vehicle manufacturers use dynamic compositing to let the visitor visualize their customizations.

### Large image sets, mapping, and geospatial use

Geospatial or mapping has particular need for specialized "image servers". Aerial and satellite images are georeferenced and can be hundreds or thousands of gigabytes in size. Traditional mechanisms for serving this data have proved inadequate. The first specialized image server for geospatial image data was Image Web Server, released in 1999. Image Web Server, among other protocols, supports ECWP (ERDAS Compressed Wavelet Protocol) that "streams" large images to a user's application, rather than sending a regular image over HTTP. The well known standard for a distributed architecture of geospatial data is Web Map Service.

### Responsive web design & mobile support

Responsive web design has driven the creation of dozens of new image servers which often integrate device or resolution detection.
To prevent resampling artifacts, it's important that images display at native resolution - one image pixel per device display pixel.
To accomplish this, a large number of variations must be created for each screen resolution. An image server can solve that by dynamically adjusting the size of the image according to the user's browser settings.

### Backwards compatibility

Old versions of Internet Explorer have trouble displaying PNG and MNG images, but an image server could detect the user's browser version and send the image in a supported format such as GIF instead.
Image servers may enable early adopters to begin using WebP before all browsers implement support.

## Standards and specifications

* RESTful Image API (RIAPI) - 2012 - Draft specification for a simple, declarative, querystring-based image API. Browser-compatible.
* Internet Imaging Protocol (IIP) - 1997 - (optionally) HTTP-based imperative protocol for image editing; heavily tied to the FlashPix file format. Authored by the International Imaging Industry Association
* ECWP (ERDAS Compressed Wavelet Protocol)
* Web Map Service