在 R 中导入 png 文件并转换为动画(.mp4)
Import png files and convert to animation(.mp4) in R
我正在尝试用 R 中的多个 png 文件创建一个短动画。我尝试了包 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 文件。任何解决方案?使用任何一个包都应该没问题。谢谢!
你可以这样做(假设图像在当前目录中):
library(animation)
imgs <- list.files(pattern="*.png")
saveVideo({
for(img in imgs){
im <- magick::image_read(img)
plot(as.raster(im))
}
})
默认创建 animation.mp4
.
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
所选的最佳答案要求您先安装ffmpeg
。如果你还没有,并且由于有限的管理权限,你不能在你的电脑上安装其他程序,你可以尝试 av
包。
无需安装任何其他程序即可运行。
av::av_encode_video(list.files(productPath, '*.png'), framerate = 30,
output = 'test.mp4')
我正在尝试用 R 中的多个 png 文件创建一个短动画。我尝试了包 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 文件。任何解决方案?使用任何一个包都应该没问题。谢谢!
你可以这样做(假设图像在当前目录中):
library(animation)
imgs <- list.files(pattern="*.png")
saveVideo({
for(img in imgs){
im <- magick::image_read(img)
plot(as.raster(im))
}
})
默认创建 animation.mp4
.
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
所选的最佳答案要求您先安装ffmpeg
。如果你还没有,并且由于有限的管理权限,你不能在你的电脑上安装其他程序,你可以尝试 av
包。
无需安装任何其他程序即可运行。
av::av_encode_video(list.files(productPath, '*.png'), framerate = 30,
output = 'test.mp4')