运行命令行工具后如何保留原始名称?

运行命令行工具后如何保留原始名称?

我正在运行 imagemagick(CLI 工具)将图像拼接成 16 个相等的部分。

我是这样使用它的:

convert inputfile.jpg -crop 4x4@ +repage +adjoin -resize 256x256 output_4x4_%03d.jpg

我想保留原始文件的名称 inputfile.jpg,并将其自动用作输出而不是“output_4x4...”,即不必每次都更改它,这样我就可以在一堆文件上自动运行它,并保留它们的原始名称。

这可能吗?

谢谢。

答案1

在 ImageMagick 6 和 7 中,您需要先获取名称。

name=$(convert inputfile.jpg -format "%t" info:) 
convert inputfile.jpg -crop 4x4@ +repage +adjoin -resize 256x256 ${name}_4x4_%03d.jpg


有人可能会认为您可以使用 -set filename 选项,例如:

convert inputfile.jpg -set filename:fn "%t" -crop 4x4@ +repage +adjoin -resize 256x256 "%[filename:fn]_4x4_%03d.jpg"


但这不会解决 %03d。它将给出如下结果

inputfile_4x4_%03d.0.jpg
inputfile_4x4_%03d.1.jpg
inputfile_4x4_%03d.2.jpg
inputfile_4x4_%03d.3.jpg


如果你删除 _%03d,你只会得到

inputfile_4x4.jpg


至少在我的 Mac 上是这样的。

相关内容