Мне нужно загрузить некоторые файлы .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»).Что-то не так с моей петлей, которая вызывает эту проблему?