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)
您可以使用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)