8 my ($name, @cmds) = split /:(?<!\\:)/, $src =~ s/\.(\w+)\z//r;
10 next if $name =~ m/\./;
12 ($src) = grep {-e} glob qq<"$name"{,:*}.$ext> or next;
14 s/\\(.)/$1/g for @cmds;
17 if (@cmds and $cmds[0] =~ /^\d/) {
18 # crop shorthand from initial dimension argument
19 my @crop = split /\D/, shift @cmds;
20 unshift @cmds, -gravity => 'southeast', -chop => "$crop[2]%x$crop[3]%"
22 unshift @cmds, -chop => "$crop[0]%x$crop[1]%";
24 unshift @cmds, -gravity => 'northwest' if @cmds;
25 push @cmds, '-strip', -gravity => 'north', -quality => 60;
26 my @cmdwebp = (-resize => '630x420^', -extent => '630x420', -quality => 30);
27 my @cmdjpeg = (-resize => '300x200^', -extent => '300x200');
28 system(convert => $src, @cmds, @cmdjpeg, "../$name.jpg" ) == 0 and
29 system(convert => $src, @cmds, @cmdwebp, "../$name.webp") == 0
30 or $failcount += warn "error creating $name.jpg from $src\n";