我有一张原始图片(比如说,1600x1200),我想创建一系列缩略图,分别具有以下不同的分辨率:
使用ImageMagick 6.7.0-10,我尝试了以下操作(使用
- 900x0(即按比例缩放为900像素宽)
- 700x0
- 0x550(即按比例缩放为550像素高)
- 0x400
- 0x150
- 200x200(即裁剪并居中)
convert
命令。问题在于,不断重新初始化convert
会浪费大量资源,最好的方法是链接这些操作,以便convert
可以重复使用其工作。使用ImageMagick 6.7.0-10,我尝试了以下操作(使用
+write
选项,参见http://www.imagemagick.org/script/command-line-options.php#write),但它似乎无效,因为+write
命令不能将图像恢复到其原始状态:convert '/tmp/original.jpg'[0] -quality 95 -density 72x72 -resample 72x72 +profile '!xmp,*'\
-resize '900>' +write '/tmp/900.jpg'\
-resize '700>' +write '/tmp/700.jpg'\
-resize '200x' -crop '200x200+0+35' +repage +write '/tmp/200.jpg' \
-resize 'x550>' +write '/tmp/550.jpg'\
-resize 'x400>' +write '/tmp/400.jpg'\
-resize 'x150>' '/tmp/150.jpg'\
* 为了提高可读性,可以使用行末反斜杠(end-of-line backslashes)。
另外,我尝试了以下方法(使用+clone
和-delete
),它似乎有效,但可能可以更加高效(也许使用mpr:
http://www.imagemagick.org/Usage/files/#mpr):
convert 'original.jpg'[0] -quality 95 -density 72x72 -resample 72x72 +profile '!xmp,*' \
\(+clone -resize 'x150>' -write '150.jpg' \) \
-delete 1 \(+clone -resize 'x400>' -write '400.jpg' \) \
-delete 1 \(+clone -resize 'x550>' -write '550.jpg' \) \
-delete 1 \(+clone -resize '200x' -crop '200x200+0+35' +repage -write '200.jpg' \) \
-delete 1 \(+clone -resize '700>' -write '700.jpg' \) -delete 1 -resize '900>' '900.jpg' \
有人能解释一下我在第一个例子中(使用+write
命令)做错了什么吗?另外,有人能提出任何改进来使CPU/内存更有效率吗?
回答后
我仍然很好奇为什么+write
不起作用。
+write
命令吗?您考虑过向ImageMagick开发人员提交关于+write
的错误报告吗? - Kurt Pfeifle