我想用每个文件的名称替换 image_annotate 下面的“文本”。
library(dplyr)
library(purrr)
library(magick)
list.files(path = "", pattern = "*.png", full.names = T) %>%
map(image_read) %>%
lapply(. %>% image_annotate("Text")) %>%
image_join() %>%
image_animate(fps=1) %>%
image_write("animated.gif")
最佳答案
我认为这应该有效。由于您获得了有关文件名的信息并将其传递给 image_read
但也想将此信息用于另一个函数( image_annotate
),您可以轻松地将两者放在 map
内的函数中.如果您不想将整个路径作为注释,只需替换 image_annotate(fnme)
来自 image_annotate(stringr::str_extract(string = fnme, pattern = "(?<=(/|\\\\)).+(?=\\.png)"))
匹配 /
之间的任何内容或 \
和 .png
(假设您不想要结尾,否则只需删除前瞻 (?=\\.png
)。
library(dplyr)
library(purrr)
library(magick)
list.files(path = "", pattern = "*.png", full.names = T) %>%
map(function(fnme) {
image_read(fnme) %>% image_annotate(fnme)
}) %>%
image_join() %>%
image_animate(fps=1) %>%
image_write("animated.gif")
关于r dplyr - 读取文件列表并使用文件名作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46923970/