我有一个很大的图像,让我们把它命名为orig-image.tiff。 我想把它切成小块,在上面涂上东西,然后将新创建的小图像拼接在一起。
我用这个命令将它切成碎片:
convert orig-image.tiff -crop 400x400 crop/parts-%04d.tiff
然后我将通过对每个部分-XXXX.tiff图像应用处理并最终得到part-0000.png到part-2771.png的图像来生成许多图像
现在我想将图像拼接成一个大图像。 imagemagick能做到吗?
答案 0 :(得分:2)
如果您使用的是PNG格式,那么瓷砖会"记住" 它们的原始位置,正如@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
这是因为瓷砖"记住" 它们在画布上的原始位置 - 例如下面+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
关于格伦在下面的评论,这里是pngcheck
的输出,显示"记住" 的偏移量:
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).