使用 magick 将图像列表保存到文件

save list of images to files with magick

我正在尝试了解 purrr,以及如何 map/walk 遍历图像列表并将它们保存到文件中。下面是我使用 for 循环工作的代码,但是如何使用 purrr 构建它?我对各种版本感到困惑(walk、walk2、pwalk、map、map2、pmap 等)

library(magick)
library(purrr)

#create a list of the files
inpath <- "C:\Path\To\Images"

file_list <- list.files(path = inpath, full.names = TRUE)

# read the files and negate them
imgn <- map(file_list, image_read) %>% 
  map(image_negate)

# assign list names as original file names
names(imgn) = list.files(path = inpath)

# how to use walk, map, map2?  walk2, pwalk? to do this
for (i in 1:length(imgn)) {
  
  image_write(imgn[[i]], path = names(imgn)[[i]])

}

如果我对您的代码的理解是正确的,您似乎是在尝试将编辑后的图像保存到它们的原始文件路径中。如果是这样,您能否将 for 循环替换为:

map2(imgn, file_list, ~ image_write(.x, path = .y))

作为解释,您想使用 map2 因为您正在应用具有两个输入的函数;您要保存的图像(存储在 imgn 中),以及您要将其写入的文件路径(存储在 file_list 中)。然后,您可以使用公式表示法来指定要映射的函数和参数,如上所述(更多信息请参见 map 文档)。

使用 base R

中的 Map
Map(function(x, y) image_write(x, path = y), imgn, file_list)