Imagemagick 裁剪成瓷砖并强制所有尺寸相同?

Posted

技术标签:

【中文标题】Imagemagick 裁剪成瓷砖并强制所有尺寸相同?【英文标题】:Imagemagick crop into tiles and force all to have same size? 【发布时间】: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 整除,然后再裁剪?

谢谢!

【问题讨论】:

【参考方案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 通道 谢谢,最后一个命令有效。我看到使用透明白色的缺点,非常感谢! :)

以上是关于Imagemagick 裁剪成瓷砖并强制所有尺寸相同?的主要内容,如果未能解决你的问题,请参考以下文章

ImageMagick:转换、裁剪、调整大图像

ImageMagick之图片裁剪详解

Imagemagick 将透明图像裁剪为蒙版

使用 Imagemagick 从图像中自动裁剪文本(签名)并更改背景颜色

使用 CATiledLayer,渲染时 Tiles 之间的细线,使用 ImageMagick 生成的瓷砖

Dragonfly/imagemagick 调整大小和裁剪,并可能添加白色填充