r piping image_annotate没有按预期工作

时间:2017-10-24 23:51:33

标签: r imagemagick animated-gif purrr piping

我正在尝试使用magick从一堆图像中创建动画gif。它工作得很好,但我想在创建gif之前为每个图像注释文本(基本上是文件名) - 这不起作用。

我无法找到错误原因(如下所示) - 不确定是否是管道符号,地图功能或其他内容。

library(purrr)
library(magick)

#set working directory with a couple of png's
#This works:
image_read("image1.png") %>% image_annotate("Text")    

#and this works too:
list.files(path = "", pattern = "*.png", full.names = T) %>% 
      map(image_read) %>%
      image_join() %>% 
      image_animate(fps=1) %>% 
      image_write("animated.gif")

#but this doesn't:
list.files(path = "", pattern = "*.png", full.names = T) %>% 
      map(image_read) %>%
      map(image_annotate("Text")) %>%
      image_join() %>% 
      image_animate(fps=1) %>% 
      image_write("animated.gif")

我收到此错误: Error in inherits(image, "magick-image") : argument "image" is missing, with no default

1 个答案:

答案 0 :(得分:1)

在我看来,好像错误可能在嵌套你的地图。

由于您已在image_read期间进行了映射,因此无需再次image_annotate

修改 因此,我们需要将函数image_annotate应用于映射的image_read返回的列表中的每个元素。尝试将map(image_annotate("Text") %>%替换为:

lapply(image_annotate("Text")) %>%

lapply(. %>% image_annotate("Text")) %>%

Reference for lapply()