FlashPix

FlashPix is a bitmapped computer graphics file format where the image is saved in more than one resolution. Its design anticipated that when an HTTP request is sent for the file by a browser plugin implementing the format, only the image compatible with the current screen resolution is returned to the browser, saving on bandwidth and download time.

History
FlashPix is based on the IVUE file format, the tiled/multi-resolution image file format that was used by the Live Picture software (Live Picture Inc). In 1995, a consortium of Eastman Kodak (PhotoCD), Microsoft, Hewlett-Packard, and Live Picture Inc were looking for a powerful image file solution, and Live Picture's solution was the best approach for handling large image files.

Technical overview
FlashPix files have the .fpx file extension. FlashPix uses Microsoft's structured storage format, which stores hierarchical data in a single file.

Each image is stored with its sub-resolutions. Each resolution is divided by 2, until the entire image can fit in a single tile. Tile size is variable, but the default usage is to have 64 × 64 pixel tiles (IVUE was using 256 × 256 pixels). Each tile can be compressed independently of other tiles using various algorithms (LZH, JPEG, RLE). Each pixel can have any number of channels of any size (for instance a 16-bit CMYK image), interleaved or not. Including alpha channel.

The result is a file bigger than the original (at the same compression), but never more than 33% bigger. It allows efficient access to only the needed parts of the image without having to read the entire file.

For a 10200 × 7650 16-bit CMYK image using 64 × 64 tiles, as a normal uncompressed image would occupy 595 MB of disk space. FlashPix, however, will store: Total size: ~793 MB
 * The original image: 10200 × 7650 pixels in 160 × 120 tiles (~595 MB, but usually less using RLE or LZH per-tile)
 * Sub-resolution 1: 5100 × 3825 pixels in 80 × 60 tiles (~149 MB)
 * Sub-resolution 2: 2550 × 1913 pixels in 40 × 30 tiles (~37 MB)
 * Sub-resolution 3: 1275 × 957 pixels in 20 × 15 tiles (~9 MB)
 * Sub-resolution 4: 638 × 479 pixels in 10 × 8 tiles (~2.3 MB)
 * Sub-resolution 5: 319 × 240 pixels in 5 × 4 tiles (~598 KB)
 * Sub-resolution 6: 160 × 120 pixels in 3 × 2 tiles (~150 KB)
 * Sub-resolution 7: 80 × 60 pixels in 2 × 1 tiles (~37.5 KB)
 * Sub-resolution 8: 40 × 30 pixels in a single tile (~9 KB)

A viewer (such as photo editing software) will access only the needed part. In the worst case, for a 1680 × 1050 display, 53 × 33 tiles (56 MB) are needed in memory, whatever portion of the image is being used.

Availability
A Flashpix OpenSource Toolkit (libfpx) is provided by ImageMagick. This code is mostly provided by Digital Imaging Group Inc and the Eastman Kodak Company in 1999, under a license (flashpix.h) similar to Apache License 1.0. Some code is adapted from IVUE code, and it also includes its own JPEG library by HP.