Common Applications of MNG
Perhaps the most basic, nontrivial MNG application is the slide show: a
sequence of static images displayed in order, possibly looping indefinitely
(e.g., for a kiosk). Because MNG incorporates not only the concepts of
frames, clipping, and user input but also all of PNG's features, a MNG slide
show could include scrolling, sideways transitions, fades, and palette
animations--in other words, most of the standard effects of a dedicated
presentation package and maybe a few nonstandard ones. Such an approach
would not necessarily produce smaller presentations than the alternative methods
(although the most popular alternatives tend to be rather large), and, as
currently specified, it would be limited to a particular resolution defined
by the component raster images. But MNG offers the potential of a
more open, cross-platform approach to slide shows.
MNG also supports partial-frame updates, which not only could be used for
further slide show transitions (for example, dropping bulleted items
into place, one at a time) but also are able to support animated movies.
Unlike animated GIFs, where moving a tiny, static bitmap (or ``sprite'')
around a frame requires many copies of the sprite, MNG can simply indicate
that a previously defined sprite should move somewhere else. It also
supports nested loops, so a sprite could move in a zigzag path to the right,
then up, then left, and finally back down to the starting position--all
with no more than one copy of the background image (if any) and one copy of
the moving bitmap. In this sense, MNG defines a true animation format,
whereas GIF merely supports slightly fancy slide shows.
Images that change with time are likely to be some of the most common types
of MNG streams, but MNG is useful in completely static contexts as well.
For example, one could easily put together a MNG-based contact sheet of
thumbnail images without actually merging the images into a single, composite
bitmap. This would allow the same file to act both as an archive (or container)
for the thumbnails, from which they could easily be extracted later without
loss, and as a convenient display format.
If the number of thumbnails grew too large to fit on a single ``page,'' MNG's
slide show capabilities could be invoked to enable multipage display.
Other types of static MNGs might include algorithmic images or
three-dimensional ``voxel'' (volume-pixel) data such as medical scans.
Images that can be generated by simple algorithms are fairly rare if one
ignores fractals. But 16million.png, which I discussed in Chapter 9, "Compression and Filtering", is
such an image. Containing all 16.8 million colors possible in a 24-bit image,
it consists of nothing but smooth gradients, both horizontally and vertically.
While this allowed PNG's filtering and compression engine to squeeze a 48 MB
image into just over 100 KB, as a MNG containing a pair of loops, move
commands, and a few odds and ends it amounts to a mere 476 bytes. Of course,
compression factors in excess of 100,000 times are highly atypical. But
background gradient fills are not, and MNG effectively allows one to compress
the foreground and background parts independently, in turn allowing the
compression engine and the file format itself to work more efficiently.
Ironically, one of the most popular nonanimated forms of MNG is
likely to have no PNG image data inside at all. I've
emphasized in earlier chapters that PNG's lossless compression method
is not well suited to all tasks; in particular, for web-based display
of continuous-tone images like photographs, a lossy format such as
JPEG is much more appropriate, since the files can be so much smaller.
For a multi-image format such as MNG, support for a lossy
subformat--JPEG in particular--is a natural extension. Not only
does it provide for the efficient storage of photographic backgrounds
for composite frames (or even photographic sprites in the foreground),
it also allows JPEG to be enhanced with PNG-like features such as
gamma and color correction and (ta da!) transparency. Transparency
has always been a problem for JPEG precisely because of its lossy
approach to compression. What MNG provides is a means for a lossy
JPEG image to inherit a loss less alpha channel. In other words,
all of the size benefits of a JPEG image and all of the fine-tuned
anti-aliasing and fade effects of a PNG alpha channel are now possible
in one neat package.