ImageMagick的参数用于指定输出格式。

5
我正在使用ImageMagick编程来对图像进行一些用户定义的转换。我使用的脚本会生成一个新进程,并以类似以下参数的方式运行ImageMagick:
convert /tmp/source -resize 100x /tmp/transformed

然后它从/tmp/transformed读取转换后的图像。我想添加将图像转换为另一种图像格式的选项,但是经过一段时间查看IM文档后,我能想到的唯一方法是在输出目标后附加.<ext>,像这样:
convert /tmp/source -resize 100x /tmp/transformed.png

还有别的方法吗?对于我来说,使用现有的脚本最简单的方法是提供一个参数,但我找不到它。类似这样:

convert /tmp/source -resize 100x -format png /tmp/transformed

这是否可能?或者我必须将扩展名附加到输出目标上?

2个回答

9

我不确定你对于添加后缀的厌恶是什么原因,但除了Fred所提供的优秀建议之外,另一个选择是使用“格式说明符”前缀,这将不会改变您的基本文件名 - 如果这是您想要实现的目标。

convert Image -resize 100x PNG:/tmp/transformed/Image

PNG:替换为GIF:JPEG:等以适应需求。


如果我不修改那些代码库,工作起来会更容易,因为/tmp/transformed字符串在很多地方都是硬编码的。感谢您的解决方案! :) - Chris White
2
在管道中使用convert时(写入到标准输出)也非常有用,例如:curl http://xyzzy/img.png | convert -resize 64x - png:- | base64 > out.b - unhammer

3

-format png在mogrify中使用,而不是convert。您需要在输入和输出文件名中指定输入的后缀和所需的输出后缀。

convert /tmp/source.suffx -resize 100x /tmp/transformed.png

假设你想得到PNG格式的输出。
也许我误解了你的意思,请澄清一下。这些后缀是在源和转换变量中吗?如果是这样,您可以使用IM将源文件名与其后缀分开,使用%t和%e在字符串格式中。但对于输出,您需要使用文件系统解析它。请参见http://www.imagemagick.org/script/escape.php 或者,使用支持“-format png”的mogrify。
mogrify -format png -resize 100x *.suffix

那将处理输入目录中所有后缀为.suffix的文件并转换为png格式。然而,我建议您创建一个新目录来存放所有输出图像,因为现在它会覆盖您的输入文件。然后您需要在上面的命令中添加-path path2/newdirectory。请参见http://www.imagemagick.org/Usage/basics/#mogrify了解更多信息。
这些源和目标实际的文件名是什么?它们只是实际文件名的变量吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接