use Errno;
use Exporter qw{import};
use File::stat;
+use Image::ExifTool qw{};
use Image::Imlib2;
use User::pwent;
use POSIX;
our $STATICURL //= "$ROOTURL/tgal-static";
our $SCRIPTURL;
+export qw{$SRCURL};
+our $SRCURL = "https://git.distorted.org.uk/~mdw/tgal/";
+
export qw{%SIZE};
-our %SIZE = (bigthumb => 228, view => 1200);
+our %SIZE = (smallthumb => 96,
+ medthumb => 144,
+ bigthumb => 228,
+ view => 1200);
export qw{init};
my $initp = 0;
###--------------------------------------------------------------------------
### Scaled images.
+my %ORIENT =
+ (1 => [0, 0],
+ 2 => [0, 1],
+ 3 => [2, 0],
+ 4 => [2, 1],
+ 5 => [3, 1],
+ 6 => [1, 0],
+ 7 => [1, 1],
+ 8 => [3, 0]);
+
package TrivGal::Image {
use File::Path qw{make_path};
use File::stat;
my $img = $me->{img};
unless (defined $img) {
my $imgpath = "$IMGROOT/$path";
+ my $exif = new Image::ExifTool;
+ $exif->ExtractInfo($imgpath);
+ my $orient = $exif->GetValue("Orientation", "ValueConv");
$img = $me->{img} = Image::Imlib2->load($imgpath);
+ if (defined $orient) {
+ my ($rot, $flip) = @{$ORIENT{$orient}};
+ if ($rot) { $img->image_orientate($rot); }
+ if ($flip) { $img->flip_horizontal(); }
+ }
}
my ($wd, $ht) = ($img->width, $img->height);
if ($item && $comment) { $item->comment($comment); }
close $f;
} else {
+ my $st = stat $path;
+ unless ($st->mode&0004) { return ([], [], undef); }
+
opendir $d, $path;
my @e = readdir $d;
closedir $d;
my $dotp = $e =~ /^\./;
my $st = stat "$path/$e";
my $list = undef;
- if ($dotp || !($st->mode&0004)) { }
+ if ($dotp) { }
elsif (-d $st) { $list = \@d; }
elsif ($TYPE{lc $ext} && -f $st) { $list = \@f; }
$list and push @$list, TrivGal::Item->new($e);