2015-06-08 83 views
0

我正在使用ImageMagick生成较小尺寸的JPEG版本的大型TIFF图像。对于每个TIFF图像,我必须生成两个较小的JPEG版本。使用一个ImageMagick命令创建图像的两种尺寸

我目前使用两个convert命令:

convert.exe 4096-by-3072px-120mb.tif -resize "1024x>" -strip -interlace Plane 1024px-wide-for-web.jpg 
convert.exe 4096-by-3072px-120mb.tif -resize "1600x>" -strip -interlace Plane 1600px-wide-for-web.jpg 

转换TIFF至JPEG一个接一个走了太多的时间。这种方法效率低下,因为每个图像都通过网络加载并处理两次。随着我计划为每个TIFF创建更多尺寸(认为10,000个TIFFs×5尺寸),情况会变得更糟。

那么,是否有可能使用单个ImageMagick命令生成两个或更多不同大小的输出文件?

回答

2

是的,这是可能的,使用所述-write选项:

convert 4096-by-3072px-120mb.tif -resize "1600x>" -strip -interlace Plane \ 
-write 1600px-wide-for-web.jpg -resize "1024x>" 1024px-wide-for-web.jpg 

其重新缩放输入图像以1600个像素宽,写出来,然后重新调节的结果为1024个像素宽和写入。按照尺寸的降序编写图像很重要,以避免由于缩放到较小尺寸而导致质量损失,然后返回到较大尺寸。

如果您更喜欢从输入图像重新调整两个图像,使用+clone 选项:

convert 4096-by-3072px-120mb.tif -strip -interlace Plane \ 
\(+clone -resize "1024x>" -write 1024px-wide-for-web.jpg +delete \) \ 
    -resize "1600x>" 1600px-wide-for-web.jpg 

在这种情况下写入图像的顺序并不重要。

+0

它似乎使用第一个尺寸来创建第二个尺寸而不是原始尺寸。 –

+0

Glenn的答案正常工作 - 我怀疑他只是先创建较大的图像,以便直接从全尺寸原件创建,而不是尝试增加已经缩小的较小输出图像的分辨率,从而降低质量。 –

0

下面是一个使用memory program register备用命令:

convert.exe 4096-by-3072px-120mb.tif -strip -interlace Plane -write mpr:main +delete^
mpr:main -resize "1024x>" -write 1024px-wide-for-web.jpg +delete^
mpr:main -resize "1280x>" -write 1280px-wide-for-web.jpg +delete^
mpr:main -resize "1600x>" -write 1600px-wide-for-web.jpg +delete^
mpr:main -resize "2048x>"  2048px-wide-for-web.jpg 

当测试:

  • 用这个命令生成的文件的那些相同。通过分离的转换创建命令
  • 这个命令被与单独命令相比快两倍

注意:^是Windows上的续行字符。

相关问题