【发布时间】:2011-09-28 22:05:10
【问题描述】:
我有一个原始图像(例如,1600x1200),我想为其创建一系列具有各种分辨率的缩略图:
- 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'\
* readability purposes 的行尾反斜杠
或者,我尝试了以下方法(使用+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 不起作用。
【问题讨论】:
-
@D Camey:你的 IM 似乎很新。您是否考虑过将您的
+write命令与一两个以前发布的 IM 版本一起使用?您是否考虑向 ImageMagick 开发人员提交有关+write的错误报告? -
是的,我考虑过。我想我会先在这里检查一下,以防我误解了文档或其他人有同样的问题。
标签: image image-processing imagemagick chaining