使用 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)
我正在尝试了解 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)