我正在运行 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 上是这样的。