使用Wand并排堆叠两个图像

时间:2017-07-20 00:12:01

标签: python image-processing wand

如何在魔杖(python)中并排堆叠两个图像?复合方法可用,但它将一个图像放在另一个上面。 我想要像numpy.vstack这样的东西。

2 个答案:

答案 0 :(得分:1)

wand.image.Image.composite方法接受top& left个参数。没有太多的努力来并排合成图像......

with Image(filename="rose:") as left:
  with Image(filename="rose:") as right:
    with Image(width=left.width+right.width,
               height=max(left.height, right.height)) as output:
      output.composite(image=left, left=0, top=0)
      output.composite(image=right, left=left.width, top=0)
      output.save(filename="hstack.png")

hstack

...或堆叠......

with Image(filename="rose:") as top:
  with Image(filename="rose:") as bottom:
    with Image(width=max(top.width, bottom.width),
               height=top.height + bottom.height) as output:
      output.composite(image=top, left=0, top=0)
      output.composite(image=bottom, left=0, top=top.height)
      output.save(filename="vstack.png")

vstack

当然,您可以简化上述示例,或使用wand.api.library来实施MagickAppendImage

答案 1 :(得分:0)

您还可以将 smush() 与图像之间的可选间距一起使用,并且:

  • stacked=True 用于垂直(一个在另一个之上)堆叠,或
  • stacked=False 用于并排堆叠。

from wand.image import Image

im = Image(filename="rose:")
with im as output:
    output.sequence.append(im)
    output.sequence.append(im)
    output.smush(True, 5)
    output.save(filename='result.png')

https://arpitbhayani.me/blogs/mongodb-cursor-skip-is-slow

如果您不希望图像之间有任何间距,请使用 offset=0 或仅使用 concat() 而不是 smush(),但方式完全相同。