SaveGIF в пакете анимации дает пустое изображение - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно загрузить некоторые файлы .png из Интернета в период с января 1990 года по декабрь 1999 года, обрезать их, а затем создать анимацию в виде файла .gif с использованием изображений.Когда я загружаю файлы .png, я называю их по месяцам и годам, поэтому изображение для января 1990 года называется «tmp011990.png» на моем компьютере, апрель 1992 года называется «tmp041992.png» и т. Д. Код для загрузки и обрезкиизображения работают просто отлично.

library(grid)
library(png)
library(animation)
library(ggplot2)

#example code for a single image using January 1990
#this code plots properly with proper cropping
img = readPNG("tmp011990.png")
g <- rasterGrob(img[100:400,40:320,])
ggplot() + annotation_custom(g)

#code for creating the animated GIF, gives a blank white image
saveGIF({
  for (n in 1990:1999) {
    for (i in 1:12) {
      imagename = sprintf("tmp%02i%d.png",i,n)
      print(imagename)
      img = readPNG(imagename)
      g <- rasterGrob(img[100:400,40:320,])
      ggplot() + annotation_custom(g)
    }
  }
}, interval = 0.1, movie.name="seaice.gif")

#alternate code for creating the GIF, displays only the last frame
saveGIF({
  for (n in 1990:1999) {
    for (i in 1:12) {
      imagename = sprintf("tmp%02i%d.png",i,n)
      print(imagename)
      img = readPNG(imagename)
      g <- grid.raster(img[100:400,40:320,])
      ggplot() + annotation_custom(g)
    }
  }
}, interval = 0.1, movie.name="seaice.gif")

Ожидаемым результатом функции saveGIF является файл GIF, который представляет собой анимацию всех 120 месяцев, начиная с января 1990 года по декабрь 1999 года. При использовании rasterGrob в цикле, на выходе получается пустое белое изображение.При использовании grid.raster в цикле кажется, что каждое изображение отображается поверх последнего, а не заменяется им, поэтому на выходе получается GIF-файл, отображающий только последнее изображение («tmp121999.png»).Что-то не так с моей петлей, которая вызывает эту проблему?

1 Ответ

0 голосов
/ 30 апреля 2019

Неважно, проблема решена.Вы должны использовать print (ggplot ()) при использовании функции saveGIF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...