X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/b8356cfbfb64e8103dadc2e96c1c62ee13a3f687..c4af187b7b7518a0810e90f8fd79caba84ac0d34:/Shiar_Sheet/ImagePrep.pm diff --git a/Shiar_Sheet/ImagePrep.pm b/Shiar_Sheet/ImagePrep.pm index 2bd4cd9..328cb4f 100644 --- a/Shiar_Sheet/ImagePrep.pm +++ b/Shiar_Sheet/ImagePrep.pm @@ -4,7 +4,7 @@ use 5.020; use warnings; use experimental 'signatures'; -our $VERSION = '1.02'; +our $VERSION = '1.03'; sub new ($class, $target) { bless \$target, $class; @@ -31,18 +31,19 @@ sub dimensions ($imgpath) { return split /\s/, $xy, 3; } -sub generate ($imgpath, $thumbpath, $cmds) { +sub generate ($imgpath, $thumbpath, $opt) { if (not -e $$imgpath) { return !-e $thumbpath || unlink $thumbpath; } - $cmds //= []; - $imgpath->convert($thumbpath, $cmds, '300x200') and # low-res cover + my @cmds = @{$opt->{convert} // []}; + unshift @cmds, -area => $_ for $opt->{crop32} || (); + $imgpath->convert($thumbpath, \@cmds, '300x200') and # low-res cover $imgpath->convert($thumbpath =~ s/\.jpg$/.webp/r, - [@{$cmds}, -quality => 40], '600x400' # higher dpi tradeoff + [@cmds, -quality => 40], '600x400' # higher dpi tradeoff ); } -sub convert ($imgpath, $thumbpath, $cmds, $xyres) { +sub convert ($imgpath, $thumbpath, $cmds, $xyres = 0) { #my ($w, $h) = $imgpath->dimensions; #my $aspect = 3/2; # $xyres my @cmds = @{$cmds}; @@ -71,7 +72,7 @@ sub convert ($imgpath, $thumbpath, $cmds, $xyres) { '-strip', -quality => '60%', -interlace => 'plane', -gravity => defined $cmds ? 'northwest' : 'center', @cmds, - -resize => "$xyres^", -extent => $xyres, + $xyres ? (-resize => "$xyres^", -extent => $xyres) : (), $thumbpath );