如何使用 imageMagick 缝合裁剪的图像?
Posted
技术标签:
【中文标题】如何使用 imageMagick 缝合裁剪的图像?【英文标题】:How to stitch back cropped image with imageMagick? 【发布时间】:2016-12-13 10:27:45 【问题描述】:我有一个很大的图像,我们将其命名为 orig-image.tiff。 我想把它剪成小块,在上面涂上东西,然后将新创建的小图像缝合在一起。
我用这个命令把它切成小块:
convert orig-image.tiff -crop 400x400 crop/parts-%04d.tiff
然后我将通过对每个 part-XXXX.tiff 图像应用处理来生成许多图像,并最终得到从 part-0000.png 到 part-2771.png 的图像
现在我想将图像拼接成一个大的。 imagemagick 能做到吗?
【问题讨论】:
我目前无法测试,但您的图块可能仍保留在画布上的原始位置。尝试使用 convert part-0000.png part-0001.png -layers merge output.png 之类的测试 【参考方案1】:如果您使用的是 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
关于下面 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).
【讨论】:
如果您对瓦片如何“记住”它们的位置感到好奇,它包含在 PNG oFFs(“偏移”)和 vpAg(“虚拟页面”)块中。 oFFs 块在 PNG 扩展规范中定义,而 vpAg 块是为 ImageMagick 发明的私有块。如果您使用 ImageMagick “-strip” 选项编写 PNG 文件,则这些块会从输出中省略,并且位置会被遗忘。 @GlennRanders-Pehrson 非常感谢您的解释 - 如果其他人有兴趣,请运行pngcheck -v SomeFile.png
以查看这些块。以上是关于如何使用 imageMagick 缝合裁剪的图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ImageMagick 从文件夹中每个 JPG 图像的底部裁剪 486 像素?