将图像拆分为多个部分

use*_*622 2 image-manipulation split

我有一个图像如下。它是 2579*2388 像素。让我们假设它的左下角是 0,0。从该图像我想创建多个图像如下并将它们保存在工作文件夹中。每个图像的大小为 100*100 像素。每个图像将通过它的左下角坐标保存。

  1. 第一个图像的左下角为 0,0。右上角将在 100,100,图像将保存为 0-0.jpg
  2. 第二张图片的左下角为 10,0。右上角将在 110,100,图像将保存为 10-0.jpg
  3. 底行完成后,Y 坐标将移动 10。在第二行的情况下,第一张图像将在 0,10 处,该图像将保存为 0-10.jpg

最快的方法是什么?我更喜欢命令行方法。但首先,我可以使用任何类型的工具。

我知道在当前图像的情况下,它会将其拆分为大约 257*238 个图像。但是我有足够的磁盘空间,我需要每个图像来执行文本检测。

在此处输入图片说明

Jan*_*nis 7

这是可以执行您想要的操作的shell 代码(bashksh、 或zsh):

image=clock.jpg

size=$( identify -ping -format "%wx%h" "${image}" )
x_upb=${size%x*}
y_upb=${size#*x}

x_inc=10
y_inc=10
x_tile=100
y_tile=100

for ((x=0; x<x_upb; x+=x_inc))
do
    for ((y=0; y<y_upb; y+=y_inc))
    do
        convert "${image}" -crop "${x_tile}x${y_tile}+${x}+${y}" "$x-$y.jpg"
    done
done
Run Code Online (Sandbox Code Playgroud)

该程序convert来自 ImageMagick 程序套件。由于还可以从图片文件中自动提取图片大小,因此我也添加了该步骤。按照 don_crissti 的评论,我也建议identify为此目的使用(它也很方便,来自 ImageMagick 程序套件)。您当然也可以在x_upb和 中对图片大小进行硬编码y_upb,还可以根据需要调整平铺大小和平铺移位增量。我希望并认为代码是不言自明的。

注意:它当然需要一些调整;例如,图块可能不会超出上限(或者,如果靠近边界,您会得到较小的子图片),因此如果您想要相等,则需要从上限中减去图块大小 -整个图像中大小的子图像。

注意:据我所知,“几何”被定义为从左上角的 (0,0) 开始的方向。如果您想要一些其他方向,您需要自己进行数学计算以适应该接口定义。对于通常的代码图案为取决于解决各坐标的上限,例如$((y_upb - y)),分别y将所述变体的一部分,(环- )变量。