Album
view release on metacpan or search on metacpan
* Medium sized images will not be resized if the original (large)
image is within the specified limits.
To obtain the old behaviour of enlarging the image, specify an '!'
after the medium size:
mediumsize 915!
#### END INCOMPATIBLE CHANGE ####
* It is now possible to select which images are included. Command line
option --select. Possible values are:
default (all except hidden)
all (all)
hidden (only the hidden images)
tag:XXX (substring search on tag)
tag:/XXX/ (pattern search on tag).
Note that selection applies to the image pages only. The journal is
(currently?) not affected by a selection.
* Fix problem where file names in info were not found in journal mode.
* Fix problem with 'backspace' key on 2nd large/medium pages.
* Mencoder now seems to need '-vf' instead of '-vop'. Bye bye
compatibility. However, this only affects rotation of movies.
* Tutorial: Document keyboard navigation.
lib/Album/Tutorial.pm view on Meta::CPAN
(Needed to write 22 image pages)
Creating pages for 1 index
(Needed to write 1 index page)
The file 'dsc00052.jpg' has now been imported as
'200405171843310052.jpg'. 'album' tries to link to the image, if that
is not possible, the image will be coped. File 'dsc00053.jpg' must be
rotated, so it will always be a copy.
If you hover the mouse over the file name in the index page, or over
the title on the image pages, a pop-up will show a selection of
information from the EXIF data.
=head2 Embedding other albums
In the file 'info.dat' you can also enter names of HTML documents to
refer to arbitrary other information you want to include in your
album. You can use this to embed (more precisely: refer to) other
albums. For example:
20040910/index.html Pictures of an exhibition
script/album view on Meta::CPAN
my $import_dir;
my $update = 0; # add new from large/import
our $dest_dir = "."; # needs occasional 'local'
my $info_file;
my $linkthem = 1; # link orig to large, if possible
my $clobber = 0; # overwrite medium/thumbnails
my $mediumonly = 0; # only medium size (for web export)
my $forcemedium = 0; # force medium size if large is smaller
my $externalize_css = 0; # create external css files
my $externalize_formats = 0; # create external format files
my $select = 'default'; # select images
my $verbose = 1; # verbose processing
# These are left undefined, for set_defaults. Note: our, not my.
our $index_columns;
our $index_rows;
our $thumb;
our $medium; # medium size, between large and small
our $album_title;
our $caption;
our $datefmt;
script/album view on Meta::CPAN
#print STDERR Data::Dumper->Dump([$implist],[qw(implist)]);
# Apply defaults to unset parameters.
set_defaults();
# warn("date => ", strftime($datefmt, localtime(time)), "\n");
# Verify and update the file list.
my $added = update_filelist();
# Perform selection. Normally, hidden entries are ignored.
# Option --select=all overrides this.
$filelist = $filelist->filter($select);
#print STDERR Data::Dumper->Dump([$filelist],[qw(filelist)]);
my $num_entries = $filelist->tally;
print STDERR ("Number of entries = $num_entries",
$added ? " ($added added)" : "",
"\n") if $verbose > 1;
die("Nothing to do?\n") unless $num_entries > 0;
exit(0) if $test;
script/album view on Meta::CPAN
# Cleanup excess indices.
for (my $i = $num_indexes ; ; $i++ ) {
unlink(d_dest("index$i.html")) or last;
}
}
sub write_index_page {
my ($x) = @_;
my $tt = $album_title.": Index"; # left title
my $t = ""; # right (index select)
my @b; # buttons
my %nav;
# Local scope...
my $orig_dd = $dest_dir;
local $dest_dir = ".";
local $fjoin = \&hjoin;
# Construct buttons and index selector.
if ( $num_indexes > 1 ) {
$nav{next} = ixname($x+1, 1) if $x < $num_indexes-1;
$nav{prev} = ixname($x-1, 1) if $x > 0;
if ( $lib_common ne "" ) {
$nav{up} = join("/","..",$lib_common,"index.html");
}
elsif ( $home_link ) {
$nav{up} = join("/","..",$home_link);
}
script/album view on Meta::CPAN
if ( !GetOptions(
# Run time options.
'clobber' => \$clobber,
'dcim=s' => sub { $import_dir = $_[1]; $import_exif++ },
'exif' => \$import_exif,
'import=s' => \$import_dir,
'info=s' => \$info_file,
'link!' => \$linkthem,
'update' => \$update,
'mediumonly' => \$mediumonly,
'select=s' => \$sel,
'extcss' => \$externalize_css,
'extformats' => \$externalize_formats,
# Album options. Can also be set in info/config files.
'captions=s' => \$caption,
'cols|columns=i' => \$index_columns,
'icon!' => \$icon,
'medium' => sub { $medium = 0 },
'mediumsize=i' => \$medium,
'rows=i' => \$index_rows,
script/album view on Meta::CPAN
}
app_ident() if $ident;
$dest_dir = @ARGV ? shift(@ARGV) : ".";
$dest_dir =~ s;^\./;;;
if ( $import_dir ) {
die("$import_dir: Not a directory\n")
unless -d $import_dir;
$import_dir =~ s;^\./;;;
}
set_selector($sel);
}
sub app_ident {
print STDERR ("This is $my_package [$my_name $my_version]\n");
}
sub app_usage {
my ($exit) = @_;
app_ident();
print STDERR heredoc(<<" EndOfUsage", 4);
script/album view on Meta::CPAN
--mediumonly ignore large images and links (for web export)
Importing:
--import XXX original images
--exif use w/ EXIF info, if possible
--dcim XXX as --import with --exif
--update add new entries from import, if needed
--[no]link [do not] link to original, instead of copying. Default is link.
Miscellaneous:
--clobber recreate everything (except large)
--clobbercss recreate (overwrite) style sheets
--select=XXX select images (default, all, hidden, tag:...)
--test verify only
--help this message
--ident show identification
--verbose verbose information
EndOfUsage
exit $exit if defined $exit && $exit != 0;
}
sub set_selector {
my $sel = shift || 'default';
my $tag;
if ( $sel =~ /^(tag):(.+)/i ) {
$sel = 'tag:...';
if ( $2 =~ /^\/(.+?)\/?$/ ) {
$tag = $1;
}
else {
$tag = quotemeta($2);
$tag =~ s/(\\ )+/\\s+/g;
}
warn("tag = \"$tag\"\n");
}
my %selectors =
( default => sub { ! $_[0]->hidden },
all => sub { 1 },
hidden => sub { $_[0]->hidden },
'tag:...' => sub { $_[0]->tag =~ $tag }
);
die("Unknown selection: $sel\n".
"Possible values are: ", join(", ", sort keys %selectors), ".\n")
unless $select = $selectors{lc($sel)};
}
################ Modules ################
package ImageInfo;
my @std_fields;
my @exif_fields;
my $exif_rot;
( run in 2.533 seconds using v1.01-cache-2.11-cpan-e623d60df62 )