2015-06-08 82 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上的續行字符。

相關問題