3

我使用 imageMagick 将图像分割成图块。我使用以下命令:

convert -crop 100x100 source.png tile%d.png

这会创建一堆平铺图像。有没有办法从瓷砖重新创建原始图像?

我正在为不同的 source.png 文件(不同尺寸)执行此操作,因此我并不总是知道每个图像会有多少个图块(即多少行/列)。

4

1 回答 1

2

我认为您无法使用 a 执行此操作,tile%d.png因为您不知道有多少行和列。如果图像大小不是 100 的倍数,您最终会得到不同大小的图块。然后,您可以检查文件大小以查找非“全尺寸”图块。如果原始尺寸为 1000x2000,这将再次崩溃。

我认为您需要在文件名中包含行和列。您将需要 IM v6.4.8-4 及更高版本。

convert source.png -crop 100x100 -set filename:tile \
    "%[fx:page.y/100+1000]_%[fx:page.x/100+1000]" \
    +repage +adjoin "file_tiles_%[filename:tile].png"

神奇的是fx:page.x/100+1000100需要匹配您的裁剪大小对于 x 并且是1000使文件的所有行最多为 9999(因此最大为 8999 行和列)或 899,如果您不想进行数学运算以从数字中删除 1000 .

如果你需要tile%d.png,你总是可以创建两个集合。当您去恢复原件时,您需要执行以下操作:

montage -mode concatenate -tile 4x file_tiles_*.png rejoined.png

您将需要计算出列数。这可以从第 1000 行中的最后一个解析...

ls -1 file_tiles_1000* | tail -1 | sed 's/.*_//g; s/\.png//g; s/^.000*//g'

§ 瓷砖裁剪

于 2013-04-06T05:06:04.787 回答