【问题标题】:Imagemagick crop into tiles and force all to have same size?Imagemagick 裁剪成瓷砖并强制所有尺寸相同?
【发布时间】:2019-05-02 11:11:34
【问题描述】:

我想将图像裁剪成 2048x2048 的切片,如下所示:

convert big.jpg -crop 2048x2048 tile%04d.jpg

但是,例如,如果原件是 5764x3888,则图块最终会像这样:

  • 2048x2048
  • 2048x2048
  • 1668x2048
  • 2048x1840
  • 2048x1840
  • 1668x1840

如何强制每个图块为 2048x2048 并位于左上角?

如果我可以在没有脚本的情况下仅在命令行中执行此操作,我会更喜欢,因为我将在 Mac 和 Windows 上执行此操作。

还是我必须先将原始图像设为 6144x4096,这样才能被 2048 整除,然后再裁剪?

谢谢!

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    我会用这个:

    convert big.jpg -crop 2048x2048 -background blue -gravity northwest -extent 2048x2048 tile%04d.jpg
    

    显然选择不同的颜色背景以满足您的需要,并选择不同的-gravity 来确定裁剪后的图像在其扩展画布上的位置。

    【讨论】:

    • 谢谢!我实际上是在转换透明的 PNG 图像,所以我添加了-transparent white 以保持透明度。
    • 您应该可以使用-background none,这样会更好,否则您可能会无意中将原始图像的白色部分渲染为透明。
    • 我首先尝试过,但这会使背景变成白色而不是透明。不确定它是否取决于源是 8 位还是 24 位 png。
    • 不知道为什么会这样。您可以尝试在-background none 之前添加-alpha on,并且可以尝试强制所有输出图块具有convert ... -extent 2048x2048 PNG32:tile%04d.png 的alpha 通道
    • 谢谢,最后一个命令有效。我看到使用透明白色的缺点,非常感谢! :)
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2019-01-11
    • 2016-11-03
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多