3

我正在尝试用 R 中的几个 png 文件创建一个简短的动画。我尝试了 package magick,但它只有在我将它们保存为 .gif 时才有效。当我尝试另存为 .mp4 时,它会生成一个 .mp4 文件,但一旦打开它,只会显示第一个图像。

我的代码是

  library(magick)
  productPath <- ('/Users/abc/Desktop/products/')
  list <- list.files(productPath, '*.png')
  imagesPath <- paste0(productPath, list)
  images <- image_read(imagesPath)
  animation <- image_animate(images, fps = 20, loop = 1)
  image_write(animation, paste0(productPath, 'test.mp4'))

我发现还有一个名为 的包animation,但我真的不知道如何使用该包导入 png 文件。有什么解决办法吗?任何一个包都应该没问题。谢谢!

4

3 回答 3

4

选择的最佳答案需要您先安装ffmpeg。如果您还没有,并且由于管理权限有限,您无法在您的 PC 上安装其他程序,您可以尝试该av软件包。

这无需安装任何其他程序即可工作。

av::av_encode_video(list.files(productPath, '*.png'), framerate = 30,
                    output = 'test.mp4')
于 2020-05-13T10:52:58.053 回答
3

您可以这样做(假设图像在当前目录中):

library(animation)
imgs <- list.files(pattern="*.png")
saveVideo({
  for(img in imgs){
    im <- magick::image_read(img)
    plot(as.raster(im))
  }  
})

默认情况下,此创建animation.mp4.

于 2018-07-12T23:20:04.600 回答
3
library(purrr)
library(magick)
list.files(pattern = "*.png") %>% 
    map(image_read) %>% # reads each path file
    image_join() %>% # joins image
    image_animate(fps=5) %>% # animates
    image_write("animation.gif") # write to current dir
于 2019-07-03T20:03:31.347 回答