~mdw
/
tgal
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mason/.perl-lib/TrivGal.pm: Handle EXIF `Orientation'.
[tgal]
/
mason
/
.perl-lib
/
TrivGal.pm
diff --git
a/mason/.perl-lib/TrivGal.pm
b/mason/.perl-lib/TrivGal.pm
index
39c6913
..
4a41612
100644
(file)
--- a/
mason/.perl-lib/TrivGal.pm
+++ b/
mason/.perl-lib/TrivGal.pm
@@
-30,6
+30,7
@@
use autodie qw{:all};
use Errno;
use Exporter qw{import};
use File::stat;
use Errno;
use Exporter qw{import};
use File::stat;
+use Image::ExifTool qw{};
use Image::Imlib2;
use User::pwent;
use POSIX;
use Image::Imlib2;
use User::pwent;
use POSIX;
@@
-185,6
+186,16
@@
sub clean_temp_files () {
###--------------------------------------------------------------------------
### Scaled images.
###--------------------------------------------------------------------------
### 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;
package TrivGal::Image {
use File::Path qw{make_path};
use File::stat;
@@
-216,7
+227,15
@@
package TrivGal::Image {
my $img = $me->{img};
unless (defined $img) {
my $imgpath = "$IMGROOT/$path";
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);
$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($rot); }
+ }
}
my ($wd, $ht) = ($img->width, $img->height);
}
my ($wd, $ht) = ($img->width, $img->height);