使用 imagemagick 组合图块以创建图像

Posted

技术标签:

【中文标题】使用 imagemagick 组合图块以创建图像【英文标题】:combine tiles to create image using imagemagick 【发布时间】:2013-04-03 03:05:06 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

我认为您无法使用 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'

§ Tile Cropping

【讨论】:

以上是关于使用 imagemagick 组合图块以创建图像的主要内容,如果未能解决你的问题,请参考以下文章

如何缓存 Google 地图图块以供离线使用?

使用 Imagemagick 创建 Gif - 转换:图像重叠

使用ImageMagick(或类似文件)覆盖图像的文件名

PHP ImageMagick 将大图像拆分为图块

使用Imagemagick批量调整图像大小

使用 ImageMagick 创建的偏移堆叠图像