如何批量裁剪多张图片到固定区域?例如,在多张 1600x2000 的图片中裁剪出 400x300 的部分

如何批量裁剪多张图片到固定区域?例如,在多张 1600x2000 的图片中裁剪出 400x300 的部分

例如,我想在所有相同尺寸(相同长度和宽度)的图片中裁剪这个黄色矩形中的区域。

图像

它的一个用途可能是裁剪一堆视频游戏或程序的截图,以便只保留图像的相关部分。

答案1

您可以使用伊凡视界执行此操作。安装完成后,打开命令提示符,转到irfanview程序文件夹,然后使用以下命令转换图像:

i_view64.exe c:\images\*.jpg /crop=(0,0,500,500,0) /convert=c:\output\*.jpg 

括号内的 5 个数字是

  1. 起始X位置
  2. 起始 Y 位置
  3. 宽度
  4. 高度
  5. 从哪个角开始。

您必须自己找到这些数字。一旦您找到这些数字,您就可以使用上面的命令一次性裁剪所有图像。

或者,如果您更喜欢图形用户界面而不是命令行,您可以使用 irfarview 打开其中一张图片,按下b即可批量裁剪/转换文件。您可以通过高级按钮找到裁剪选项。

答案2

您可以使用众所周知的免费开源图像魔术师

来自的简单示例文档

convert rose: -crop 40x30+10+10  crop.gif

哪儿40x30+10+10几何学,基本上意味着width x height + offsetX + offsetY。全部以像素为单位。偏移量从左上角测量。请注意,数字和符号之间不应有空格x+我在这里添加空格以提高可读性。

要对一批图像运行该命令,您可以根据所用系统使用操作系统完成和扩展命令。例如,在 Windows 命令提示符中:

for %f in (*.png) do (
    convert %f -crop 40x30+10+10 cropped_%f
)

在 PowerShell 中:

gci *.png | %{ convert -crop 40x30+10+10 $_.FullName ($_.BaseName+"_crop"+$_.Extension)}

在 Bash 中:

images=$(ls -1 *.png)
for image in $images ; do
    convert -crop 40x30+10+10 cropped_$image
done

如果要递归遍历所有子目录,请使用:

images=$(find -type f -name '*.png')

答案3

https://www.thewindowsclub.com/free-image-splitter-software-for-windows

我使用 2] 和 4] 来分割大地图或卫星图像。

相关内容