如何使用 imageMagick 拼接裁剪后的图像?

How to stitch back cropped image with imageMagick?

我有一张大图,给它取名orig-image.tiff。 我想把它剪成小块,在上面涂上东西,然后把新创建的小图像缝合起来。

我用这个命令把它切成碎片:

convert orig-image.tiff -crop 400x400 crop/parts-%04d.tiff

然后我将通过对每个 part-XXXX.tiff 图像应用处理来生成许多图像,并最终得到从 part-0000.png 到 part-2771.png[=11 的图像=]

现在我想把图片拼接成一张大图片。 imagemagick 可以做到吗?

如果您使用的是 PNG 格式,这些图块将 "remember" 它们的原始位置,正如@Bonzo 所建议的那样,您可以像这样将它们拆开并重新组装:

# Make 256x256 black-red gradient and chop into 1024 tiles of 8x8 as PNGs
convert -size 256x256 gradient:red-black -crop 8x8 tile-%04d.png

并重新组装:

convert tile*png -layers merge BigBoy.png

这是因为方块 "remember" 它们在 canvas 上的原始位置 - 例如+248+248 下面:

identify tile-1023.png
tile-1023.png PNG 8x8 256x256+248+248 16-bit sRGB 319B 0.000u 0:00.000

使用 TIF,您可以:

# Make 256x256 black-red gradient and chop into 1024 tiles of 8x8 as TIFs
convert -size 256x256 gradient:red-black -crop 8x8 tile-%04d.tif

并用以下内容重新组合,但遗憾的是您需要知道原始图像的布局:

montage -geometry +0+0 -tile 32x32 tile*tif BigBoy.tif


关于 Glenn 下面的评论,这里是 pngcheck 的输出显示 "remembered" 偏移:

pngcheck tile-1023*png

输出

OK: tile-1023.png (8x8, 48-bit RGB, non-interlaced, 16.9%).
iMac:~/tmp: pngcheck -v tile-1023*png
File: tile-1023.png (319 bytes)
  chunk IHDR at offset 0x0000c, length 13
    8 x 8 image, 48-bit RGB, non-interlaced
  chunk gAMA at offset 0x00025, length 4: 0.45455
  chunk cHRM at offset 0x00035, length 32
    White x = 0.3127 y = 0.329,  Red x = 0.64 y = 0.33
    Green x = 0.3 y = 0.6,  Blue x = 0.15 y = 0.06
  chunk bKGD at offset 0x00061, length 6
    red = 0xffff, green = 0xffff, blue = 0xffff
  chunk oFFs at offset 0x00073, length 9: 248x248 pixels offset
  chunk tIME at offset 0x00088, length 7: 13 Dec 2016 15:31:10 UTC
  chunk vpAg at offset 0x0009b, length 9
    unknown private, ancillary, safe-to-copy chunk
  chunk IDAT at offset 0x000b0, length 25
    zlib: deflated, 512-byte window, maximum compression
  chunk tEXt at offset 0x000d5, length 37, keyword: date:create
  chunk tEXt at offset 0x00106, length 37, keyword: date:modify
  chunk IEND at offset 0x00137, length 0
No errors detected in tile-1023.png (11 chunks, 16.9% compression).