Skip to content

Instantly share code, notes, and snippets.

@lopnor
Created July 5, 2010 09:26
Show Gist options
  • Select an option

  • Save lopnor/464174 to your computer and use it in GitHub Desktop.

Select an option

Save lopnor/464174 to your computer and use it in GitHub Desktop.
#!perl
use strict;
use warnings;
use Imager;
use File::Basename;
my $dir = shift;
my $savedir = "$dir/cropped";
-r $savedir or mkdir $savedir;
for my $subdir (glob("$dir/*")) {
my ($number_base) = basename($subdir) =~ /(\d+)$/;
$number_base ||= 0;
my @pages = sort {
$a->[1] <=> $b->[1]
} map {
my ($number) = $_ =~ /(\d+)\.jpeg/;
$number ||= 0;
$number += $number_base;
[ $_ => $number ]
} glob "$subdir/*.jpeg";
for my $page (@pages) {
my ($file, $number) = @$page;
my $image = Imager->new(file => $file);
my $width = $image->getwidth;
my $height = $image->getheight;
my $target = int(232/182 * $width * 0.98);
my $cropped = $image->crop(
top => $number%2 ? $height - $target : 0,
height => $target
);
$cropped->write(file => "$savedir/$number.jpg") or die $cropped->errstr;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment