【问题标题】:How to crop a image into several rectangular grids using imagemagick如何使用 imagemagick 将图像裁剪成多个矩形网格
【发布时间】:2019-10-18 06:13:30
【问题描述】:

如何将大图剪切成网格,以便将较小的图像上传到 Instagram,在网格视图中构成大图?

我认为 imagemagick 可以用于此。

【问题讨论】:

  • 对于我们这些不使用 Instagram 的人,是否有一些限制或需要在那里上传的暗示?
  • 也许你应该提供一个 Instagram 需要如何打破网格的例子。
  • 我的回答或其他人是否解决了您的问题?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步为您提供帮助。谢谢。 meta.stackexchange.com/questions/5234/…

标签: image imagemagick imagemagick-convert


【解决方案1】:

我不知道 Instagram 网格是什么或它可能有什么大小限制,但如果你有这样的图像:

您可以将其划分为一个网格,3 块宽 x 2 高,如下所示:

magick input.jpg -crop 3x2@ tile-%d.png

这里有 6 个图块:

-rw-r--r--@ 1 mark  staff   62199  2 Jun 16:26 tile-0.png
-rw-r--r--@ 1 mark  staff   75180  2 Jun 16:26 tile-1.png
-rw-r--r--@ 1 mark  staff   69615  2 Jun 16:26 tile-2.png
-rw-r--r--@ 1 mark  staff  108443  2 Jun 16:26 tile-3.png
-rw-r--r--@ 1 mark  staff  121714  2 Jun 16:26 tile-4.png
-rw-r--r--@ 1 mark  staff  121384  2 Jun 16:26 tile-5.png

如果您要裁剪成许多较小的部分,最好使用这样的零填充瓷砖名称,以便在您希望重新组装它们时按顺序列出它们。:

magick input.jpg -crop 5x4@ tile-%04d.png

-rw-r--r--  1 mark  staff   5976  2 Jun 16:33 tile-0000.png
-rw-r--r--  1 mark  staff  15138  2 Jun 16:33 tile-0001.png
-rw-r--r--  1 mark  staff  17625  2 Jun 16:33 tile-0002.png
-rw-r--r--  1 mark  staff  15640  2 Jun 16:33 tile-0003.png
-rw-r--r--  1 mark  staff  12695  2 Jun 16:33 tile-0004.png
-rw-r--r--  1 mark  staff  30138  2 Jun 16:33 tile-0005.png
-rw-r--r--  1 mark  staff  32371  2 Jun 16:33 tile-0006.png
-rw-r--r--  1 mark  staff  30280  2 Jun 16:33 tile-0007.png
-rw-r--r--  1 mark  staff  33469  2 Jun 16:33 tile-0008.png
-rw-r--r--  1 mark  staff  29507  2 Jun 16:33 tile-0009.png
-rw-r--r--  1 mark  staff  34697  2 Jun 16:33 tile-0010.png
-rw-r--r--  1 mark  staff  36322  2 Jun 16:33 tile-0011.png
-rw-r--r--  1 mark  staff  36616  2 Jun 16:33 tile-0012.png
-rw-r--r--  1 mark  staff  40337  2 Jun 16:33 tile-0013.png
-rw-r--r--  1 mark  staff  37466  2 Jun 16:33 tile-0014.png
-rw-r--r--  1 mark  staff  30444  2 Jun 16:33 tile-0015.png
-rw-r--r--  1 mark  staff  36170  2 Jun 16:33 tile-0016.png
-rw-r--r--  1 mark  staff  39400  2 Jun 16:33 tile-0017.png
-rw-r--r--  1 mark  staff  38850  2 Jun 16:33 tile-0018.png
-rw-r--r--  1 mark  staff  36439  2 Jun 16:33 tile-0019.png

【讨论】:

    【解决方案2】:

    要使用 ImageMagick 将任何图像制作成正方形网格,您需要提前确定单位数。像这样的命令首先将输入图像裁剪成一个精确的正方形,然后将该正方形裁剪成一个 3x3 的较小正方形网格......

    convert in.png -gravity center -extent 1:1 -crop 3x3@ out%02d.png
    

    “-extent”将输入裁剪为可能的最大正方形,因此当它被切割成 3x3 网格时,完成的图像也是正方形。要将图像裁剪为 3x4 网格,您将使用更像这样的命令...

    convert in.png -gravity center -extent 3:4 -crop 3x4@ out%02d.png
    

    在该示例中,“-extent”将输入图像裁剪为 3:4 的精确纵横比,因此当您将其裁剪为 3 x 4 块时,它们都将是正方形。

    这两个示例都将生成具有按顺序编号的文件名的输出图像,例如“out01.png”、“out02.png”等。

    如果您想按照需要上传的顺序对输出图像进行编号,您可能需要反向编号。您可以在编写输出之前将“-reverse -scene 1”添加到命令中,以获取按照您将用于上传的顺序编号的裁剪方块的文件名。

    如果您使用的是 IM7,请将这些命令中的“convert”更改为“magick”。

    注意:允许“-extent”使用“3:4”等纵横比的语法自 2018 年初才可用。使用旧版本的 ImageMagick 可能需要手动计算第一次裁剪以获取输入图像到适当的纵横比(...或使用 FX 表达式设置视口和“-distort”来模拟裁剪)。

    【讨论】:

    • 不错的答案!很遗憾,在线命令选项中没有提到-extent 3:4...imagemagick.org/script/command-line-options.php#extent 我可以在geometry 下看到它,但是...
    • “-extent 1:1”是一种较新的语法。我不知道哪个版本号最先使用它,但它可能从 18 年 6 月开始可用。它也适用于“-crop”。我编辑了我的帖子以提及这一点。
    • 在 IM 6.9.9-34 中,它是作为几何图形的一个选项引入的,最初用于 -crop。但它也适用于-extent。见imagemagick.org/script/command-line-processing.php#geometry@GeeMack,很好地使用 -extent 与纵横比,这是一种在裁剪前使图像呈正方形或任何纵横比的简单方法。
    猜你喜欢
    • 2012-05-16
    • 2013-02-16
    • 2012-08-13
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多