IT干货网

r之如何一次 image_read 多个图像

kevingrace 2025年01月19日 编程设计 71 0

为了使用 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") 

得到以下错误:
> image_animate(image_scale(images, "500x500"), fps = 2, dispose = "previous") 
Error: The 'image' argument is not a magick image object. 

使用时 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") 

请您参考如下方法:

您可以使用 image_join从magick 包中创建可以在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") 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!