【发布时间】:2021-04-10 19:03:44
【问题描述】:
我一直在尝试使用 magick 包在 R 中创建淡入和淡出 gif 的方法,但无法在文档中或在线找到任何帮助。
使用下面的代码,我可以从第一张图片“淡出”到第二张。但不是循环跳回到序列的开头,我希望它反向淡入。
这是从第一张图片淡出到第二张图片的代码。我必须添加什么然后向后淡入才能回到开头?
library(magick)
newlogo <- image_scale(image_read("https://jeroen.github.io/images/Rlogo.png"))
oldlogo <- image_scale(image_read("https://jeroen.github.io/images/Rlogo-old.png"))
my_gif <- image_resize(c(oldlogo, newlogo), '200x150!') %>%
image_background('white') %>%
image_morph(10) %>%
image_animate(fps=5, optimize = TRUE) %>%
image_browse(my_gif)
来自 imagemagick 网站的This answer 帮助我找到了解决方案。只需将第一个图像附加到末尾即可总共有三个图像,而不是两个。这是有效的代码:
library(magick)
newlogo <- image_scale(image_read("https://jeroen.github.io/images/Rlogo.png"))
oldlogo <- image_scale(image_read("https://jeroen.github.io/images/Rlogo-old.png"))
my_gif <- image_resize(c(oldlogo, newlogo, oldlogo), '200x150!') %>%
image_background('white') %>%
image_morph(10) %>%
image_animate(fps=5, optimize = TRUE) %>%
image_browse(my_gif)
【问题讨论】:
-
您能否在
image_animate之前停止,将其保存为tmp对象,然后将整个结果输入到原始代码中通常包含oldlogo的位置? -
稍后我会尝试您的建议,但我从这里找到了解决方案。您只需将原始图像添加到图像的末尾,如下所示: image_resize(c(oldlogo, newlogo, oldlogo), '200x150!')
-
酷。这听起来更简单。顺便说一句,您可以在下面回答您自己的问题。它也为您提供了更多想象中的互联网点。