ImageMagick:将图像分成两部分,每部分占原始图像的 55%

ImageMagick: Split image into two with 55% of original image each

我想使用 ImageMagick 按百分比拆分一些图像。 更准确地说,我想将一个图像分成两个图像。左侧的输出图像应为原始图像左侧的55%,右侧的输出图像应为原始图像右侧的55%。

(如果我没有说清楚:关键是有时图像中间有重要信息,如果我们恰好在中间分割图像,这些信息会被切断。)

到目前为止我得到的是:mogrify -crop 55%x100% +repage -path ./cropped *.jpg

所以目前,我将图像分成两部分并将其保存在“裁剪”文件夹中。但是,只有左边是原图左边的55%,右边是原图右边的45%。

由于这是我第一次使用 ImageMagick,非常感谢您的帮助!

我认为您必须 运行 对每个图像执行脚本循环并使用转换而不是移动。 Mogrify 只能为每个输入图像输出一张图像。你不说什么 platform/OS 或什么版本的ImageMagick。以下假设 Unix-like 系统带有 IM 6,这是一种实现方式。

infile="original_file.suffix"
convert "$infile" -set filename:fname "%t" -write mpr:img +delete \
\( mpr:img -gravity west -crop 55x100%+0+0 +repage +write "path_to/cropped/%[filename]_0.suffix" \) \
\( mpr:img -gravity east -crop 55x100%+0+0 +repage +write "path_to/cropped/%[filename]_1.suffix" \) \
null:

或者,您可以 运行 修改两次。一次用于左侧,一次用于右侧。使用 -gravity 来控制转换命令中的哪个。

这是另一种分割图像的方法,可以创建两个输出图像,分别为原始图像左侧 55% 和右侧 55%...

convert input.png -set filename:0 "%[t]" \
   \( +clone -roll +55+0% \) -extent 55x100% "%[filename:0]_%d.png"

首先设置用于输出的文件名变量。然后它复制输入图像,并将其向右滚动 55%。结果是将图像最右侧的 55% 移出框架,向右移动,然后返回到左侧的框架中。然后在括号后一个简单的 -extent 操作保留每张图像最左边的 55%。输出文件是根据输入文件命名的,添加了“_0”或“_1”。

正如 fmw42 所建议的那样,您可以对多个输入执行 运行 的循环命令,并在命令中包含输出文件的路径名。