- say $name;
- unshift @cmds, -gravity => 'northwest';
- push @cmds, -resize => '300x200^', -gravity => 'north', -extent => '300x200';
- push @cmds, '-strip', -quality => '60%';
- system(convert => @cmds, $src => "../$name.jpg") == 0
- or $failcount += warn "error creating $name.jpg from $src\n";
+ unless (-e $src) {
+ ($src) = grep {-e} glob qq<"$name"{,:*}.$ext> or next;
+ }
+ s/\\(.)/$1/g for @cmds;
+ print ':';
+
+ if (@cmds and $cmds[0] =~ /^\d/) {
+ # crop shorthand from initial dimension argument
+ my @crop = split /\D/, shift @cmds;
+ unshift @cmds, -gravity => 'southeast', -chop => "$crop[2]%x$crop[3]%"
+ if @crop > 2;
+ unshift @cmds, -chop => "$crop[0]%x$crop[1]%";
+ }
+ push @cmds, -gravity => 'north';
+ eval {
+ my $image = Shiar_Sheet::ImagePrep->new($src);
+ for (@ffs) {
+ my ($ff, @ffcmds) = @{$_};
+ print " $ff";
+ $image->convert("$target/$name.$ff", [@cmds, @ffcmds]);
+ }
+ 1;
+ } or do {
+ say ' FAILED';
+ warn ref $@ eq 'ARRAY' ? $@->[1] : $@ if $@;
+ $failcount++;
+ };
+}
+continue {
+ say '';