将光栅堆栈投影为动画或 GIF 传单

Posted

技术标签:

【中文标题】将光栅堆栈投影为动画或 GIF 传单【英文标题】:Project Raster Stack as animation or GIF Leaflet 【发布时间】:2016-10-01 21:43:25 【问题描述】:

有没有办法将光栅/图像作为动画投影到 Leaflet 上?

在 R raster 包中,我们可以使用:animate(rasters) 为栅格图层设置动画。您可以将其保存为 GIF 格式:saveGIF(animate(rasters))

但是我们如何将 GIF 投影到传单上呢?

我的解决方法是创建 PNG 文件

saveWidget(m, "temp.html")
webshot("temp.html", file = "filename.png"), cliprect = "viewport")

并创建一个 GIF:

im.convert(png_files, output = "output.gif")

我确信有很多其他的解决方法可以使用 javascript 和 CSS 来做到这一点,但我想知道是否可以在 R 中做到这一点而无需操作 Javascript 并且仍然拥有带有光栅动画的动态地图。

我被指示为此问题创建一个新问题,这有点不同: Create a gif from a series of Leaflet maps in R

【问题讨论】:

我不认为有一个开箱即用的解决方案,但mapview 提供了一些有趣的和改进的功能与rasterrasterBrick。我会继续思考制作 GIF 动画的简单方法。 【参考方案1】:

这是一种解决方法(在弹出窗口中显示动画.gif):

library(mapview)

gif <- "https://upload.wikimedia.org/wikipedia/commons/d/d6/MeanMonthlyP.gif"

viewExtent(kiliNDVI, fillOpacity = 0, opacity = 0,
           popup = popupImage(gif, src = "remote")) + kiliNDVI[[1]]

viewExtent 基本上在 Raster* 对象周围绘制一个矩形。我们在地图上看不到它,因为我们让它透明。 popupImage() 允许您在弹出窗口中嵌入图像。如果您想要本地图像,请设置src = "local"

【讨论】:

popupImage提供什么包? mapview 1.1.0 版 感谢蒂姆,当我运行 mapviewpopupImage 时出现此错误:Error: 'onRender' is not an exported object from 'namespace:htmlwidgets' 抱歉,我不知道这是从哪里来的,因为 1.popupImage 不使用 onRender 和 2.onRender 是从 namespace:htmlwidgets 导出的对象。也许更新你的包? 您可以设置widthheight以像素为单位放大图像。但是弹出的 div 不会超过 300px。然而,这应该通过 leaflet 的一些下一个版本来解决(我希望如此)。有关如何在 mapview 中使用弹出功能的更多示例,请参阅environmentalinformatics-marburg.github.io/mapview/popups/html/…

以上是关于将光栅堆栈投影为动画或 GIF 传单的主要内容,如果未能解决你的问题,请参考以下文章

投影 GIF 文件大小的算法或数学?

将动画 .GIF 设置为背景 Android

将精灵表转换为 gif 动画

IOS支持显示GIF动画图片吗? [复制]

如何将多个 PNG 文件转换为动画 GIF? [关闭]

如何在 Android 中从 JPEG 创建动画 GIF(开发)