X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/c4af187b7b7518a0810e90f8fd79caba84ac0d34..HEAD:/tools/mkimgthumb diff --git a/tools/mkimgthumb b/tools/mkimgthumb index 8f0097a..e9d6eb2 100755 --- a/tools/mkimgthumb +++ b/tools/mkimgthumb @@ -4,17 +4,48 @@ use warnings; use lib $0 =~ s{[^/]+$}{..}r; # project root use Shiar_Sheet::ImagePrep '1.03'; +our $VERSION = '1.00'; + +my %opt; + +if (@ARGV and $ARGV[0] =~ /^-/) { + require Getopt::Long; + Getopt::Long->import(qw( 2.33 :config gnu_getopt )); + GetOptions(\%opt, + 'jpg=s', + 'webp=s', + ) or exit 64; +} + +%opt or %opt = ( + jpg => '300x200', + webp => '630x420@30', +); + +my @ffs; +for (keys %opt) { + push @ffs, my $ff = [$_]; + my $r = $opt{$_}; + push @{$ff}, -quality => $1 if $r =~ s/@(\d+)//; + push @{$ff}, -resize => !/\dx\d+$/ ? $_ : ("$_^", -extent => $_) + for split / /, $r; +} + +my $target = '..'; +$target = pop @ARGV if @ARGV >= 2 and -d $ARGV[-1]; + my $failcount = 0; for my $src (@ARGV) { my ($name, @cmds) = split /:(? or next; } s/\\(.)/$1/g for @cmds; - say $name; + print ':'; if (@cmds and $cmds[0] =~ /^\d/) { # crop shorthand from initial dimension argument @@ -24,17 +55,22 @@ for my $src (@ARGV) { unshift @cmds, -chop => "$crop[0]%x$crop[1]%"; } push @cmds, -gravity => 'north'; - my @cmdwebp = (-resize => '630x420^', -extent => '630x420', -quality => 30); - my @cmdjpeg = (-resize => '300x200^', -extent => '300x200'); eval { my $image = Shiar_Sheet::ImagePrep->new($src); - $image->convert("../$name.jpg", [@cmds, @cmdjpeg]); - $image->convert("../$name.webp", [@cmds, @cmdwebp]); + for (@ffs) { + my ($ff, @ffcmds) = @{$_}; + print " $ff"; + $image->convert("$target/$name.$ff", [@cmds, @ffcmds]); + } + 1; } or do { - warn "error creating image:\n"; + say ' FAILED'; warn ref $@ eq 'ARRAY' ? $@->[1] : $@ if $@; $failcount++; }; } +continue { + say ''; +} exit $failcount;