dieren: high-resolution webp image alternatives
[sheet.git] / tools / mkimgthumb
index 3c38e7cf2ce419d8033738c6acd5d14db1e4141e..217b7734d45ec55c2d2100bb314645ade9ace804 100755 (executable)
@@ -5,12 +5,13 @@ use warnings;
 my $failcount = 0;
 
 for my $src (@ARGV) {
-       my ($name, @cmds) = split /:/, $src =~ s/\.(\w+)\z//r;
+       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;
        }
+       s/\\(.)/$1/g for @cmds;
        say $name;
 
        if (@cmds and $cmds[0] =~ /^\d/) {
@@ -21,9 +22,11 @@ for my $src (@ARGV) {
                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
+       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";
 }