2011-03-25 84 views
6

我目前正在为Bash编写一个shellscript,它将为一些相当大量的大图像创建不同大小的缩略图。在ImageMagick/GraphicsMagick中创建多个缩略图

我想知道是否可以让GM/IM在一次运行中创建多个大小的拇指,以避免一次又一次加载相同的图像以创建不同的缩略图,从而节省内存和执行脚本的时间?

回答

1

您可以用ImageMagick Perl bindings做到这一点,或者绑定到你选择的任何其他语言:

#!/usr/bin/perl 
use Image::Magick; 

my($image, $x); 

$image = Image::Magick->new; 
$x = $image->Read('sars.png'); 
warn "$x" if "$x"; 

$x = $image->Resize(geometry=>'600x600'); 
warn "$x" if "$x"; 

$x = $image->Write('x.png'); 
warn "$x" if "$x"; 

$x = $image->Resize(geometry=>'400x400'); 
warn "$x" if "$x"; 

$x = $image->Write('y.png'); 
warn "$x" if "$x"; 

$x = $image->Resize(geometry=>'100x100'); 
warn "$x" if "$x"; 

$x = $image->Write('z.png'); 
warn "$x" if "$x"; 

conjure命令支持XML格式Magick脚本语言,但它是在我的眼睛比Perl的困难版本,并且Perl绑定的文档肯定更好。

1

根据this post,您可以使用-write filename和GraphicsMagick“将当前图像写入指定的文件名,然后继续处理......以在仅读取一次原始图像的同时生成各种较小尺寸”。