#!/usr/bin/env perl use 5.014; use warnings; my $failcount = 0; for my $src (@ARGV) { my ($name, @cmds) = split /:/, $src =~ s/\.(\w+)\z//r; my $ext = $1 // '*'; next if $name =~ m/\./; unless (-e $src) { ($src) = grep {-e} glob qq<"$name"{,:*}.$ext> or next; } say $name; 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]%"; } unshift @cmds, -gravity => 'northwest' if @cmds; 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"; } exit $failcount;