见世界

保持长宽比居中裁切图片

需求
不变图片比例,居中裁切至指定大小。
脚本效果
指定输出文件夹及裁切参数(长x宽),批量裁切source文件夹中的图片。
工具&环境: imagemagick, perl
代码:

#!/usr/bin/perl -w
#use strict;
use warnings;

#将source文件夹中图片裁切至指定大小存入指定文件夹,图片不拉伸,居中裁切
#e.g.: perl r.pl './dianping/' 640x400
#e.g.: perl r.pl './meituan/' 660x480
#e.g.: perl r.pl './tao/' 1080x575
$target = $ARGV[0];
$param = $ARGV[1];

print $target . "\t" . $param . "\n";
system("mkdir ${target}");

opendir (DIR, './source');
while( $filename = readdir(DIR) ) {
 next if($filename eq '.' || $filename eq '..');

 $source_name = './source/' . $filename;
 $target_name = $target . $filename;

 system("convert ${source_name} -alpha Background -background white ${target_name}");
 system("convert ${target_name} -resize '${param}^' ${target_name}");
 system("convert ${target_name} -gravity Center -crop '${param}+0+0' +repage ${target_name}");
}

closedir(DIR);