App-MaMGal
view release on metacpan or search on metacpan
MaMGal was inspired by imageindex(1) and as such aims for a similar featureset
but higher efficiency and better code architecture.
=over
=item *
Index and slide views, simple layouts.
=item *
Image captions extracted from comments embedded in images themselves. This way
your photo descriptions will never get lost.
=item *
Static HTML output, no need for PHP or other server-side execution support.
=item *
Designed with efficiency in mind - only reads and processes the files which
were modified since the last run.
=item *
Image creation time extracted from EXIF metadata.
=back
=head2 Supported images
For the purpose of creating icons and slides, MaMGal supports the same images
as ImageMagick and the same films as mplayer. However it decides whether a
file is an image, film or something else, based on file extension. Please report
any file extensions that should be treated as an image or film, but are not.
=head2 Created files
In each directory mamgal creates an 'index.html' and a number of hidden files
and directories whose names start with '.mamgal-':
=over
=item .mamgal-root
an empty marker file placed in the gallery root directory
=item .mamgal-slides
a directory containing HTML files presenting one image each
=item .mamgal-medium
a directory containing images scaled to be viewable on screen when shown within the slides
=item .mamgal-thumbnails
a directory containing "iconized" versions of images
=item .mamgal-index.png
a montage image showing the contents of the given directory
=item .mamgal-style.css
a stylesheet for the HTML files in the given tree
=item .mamgal-tmp
a temporary file that might be left over from a crash
=back
=head2 Performance
MaMGal was designed with efficiency in mind, for example:
=over
=item *
loads image data or metadata lazily, only when (and if) it needs it,
=item *
only processes files when it needs to refresh or create an output file when it
is stale or missing,
=item *
runs as a single process, does not reexecute itself when recursing,
=item *
uses Perl calls and ImageMagick library to load and scale images, create and
delete files, rather than executing external shell commands to do this (mplayer
being the only exception).
=back
Here is some example data of processing 15GB worth of images (9100 files in a
tree of 528 directories), compared to imageindex(1):
=over
=item generating a gallery from scratch:
=over
=item imageindex:
3 hours, 96%CPU usage, 170K major + 227M minor pagefaults
=item mamgal:
1.5 hours, 92%CPU usage, 146K major + 102M minor pagefaults
=back
=item re-run on a freshly generated gallery:
( run in 1.147 second using v1.01-cache-2.11-cpan-8dfa8b56332 )