R Magick:无需向量化即可合成图像

时间:2019-12-01 00:49:56

标签: r imagemagick gif

image_composite R程序包中的magick函数的描述为:

  

在两个图像参数上对image_composite函数进行矢量化处理:如果第一幅图像有n帧,第二幅图像有m帧,则输出图像将包含n * m帧。

这是一个丑陋的例子:

banana <- image_read("https://jeroen.github.io/images/banana.gif")
image_composite(banana, banana, offset = "+70+00", operator = "Add")

是否有避免矢量化的方法,以便香蕉可以一起跳舞?或者,是否有其他功能(也来自其他软件包)允许这样做?

1 个答案:

答案 0 :(得分:2)

如果是同一张图片,您可以修改每帧,将矢量化由内而外进行。

image_apply(
  banana, FUN = function(img) {
    image_composite(img, img, offset = "+70+00", operator = "Add")
  }
)

enter image description here

如果您有两张相同张数的图像,则仅使用magick中公开的功能会比较困难。一种更简单的方法是将magick图像对象分成列表,并使用功能性编程工具,例如purrr::map2,然后再重新加入它们:

purrr::map2(
  as.list(banana), as.list(image_negate(banana)),
  ~image_composite(.x, .y, operator = "Add", offset = "+70+00")
  ) %>% 
  image_join()

enter image description here