#!/usr/bin/env perl use 5.014; use warnings; my $failcount = 0; for my $src (@ARGV) { my ($name, @cmds) = split /:(? or next; } s/\\(.)/$1/g for @cmds; 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, '-strip', -gravity => 'north', -quality => 60; my @cmdwebp = (-resize => '630x420^', -extent => '630x420', -quality => 30); my @cmdjpeg = (-resize => '300x200^', -extent => '300x200'); system(convert => $src, @cmds, @cmdjpeg, "../$name.jpg" ) == 0 and system(convert => $src, @cmds, @cmdwebp, "../$name.webp") == 0 or $failcount += warn "error creating $name.jpg from $src\n"; } exit $failcount;