如何一次 image_read 多个图像?

AJM*_*JMA 7 r image imagemagick

为了使用 magick 包创建 .gif,我如何一次读取多个图像?

我在列表对象中成功导入它们,但从image_animate().

# read all files in folder (only .png files)
capturas <- list.files("./path/to/images/")

# get all images in a list
images <- vector()
for (i in seq_along(capturas)) {
  images[i] <- list(image_read(str_c("./path/to/images/", capturas[i])))}

image_animate(image_scale(images, "500x500"), fps = 1, dispose = "previous")
Run Code Online (Sandbox Code Playgroud)

得到以下错误:

> image_animate(image_scale(images, "500x500"), fps = 2, dispose = "previous")
Error: The 'image' argument is not a magick image object.
Run Code Online (Sandbox Code Playgroud)

image_read在每个图像上单独使用时可以正常工作......

img_1 <- image_read(str_c("./path/to/images/", capturas[1]))
img_2 <- image_read(str_c("./path/to/images/", capturas[2]))
img_3 <- image_read(str_c("./path/to/images/", capturas[3]))
img <- c(img_1, img_2, img_3)
img <- image_scale(img, "300x300")
Run Code Online (Sandbox Code Playgroud)

Nov*_*ova 5

您可以使用image_joinmagick 包来创建可以在image_animate命令中使用的多帧图像。我使用了purrr包而不是循环。

library(purrr)
library(magick)
capturas <- list.files("./path/to/images/", pattern = "\\.png$")

# get all images in a list
images <- map(capturas, image_read)
images <- image_join(images)

image_animate(images, fps = 1, dispose = "previous")
Run Code Online (Sandbox Code Playgroud)

  • `myanimation &lt;- image_animate(images, fps = 1, dispose = "previous")`,然后:`image_write(myanimation, "myfilename.gif")` (2认同)