在闪亮的应用程序包中包含图像

tba*_*s45 6 r shiny

如果你想在普通的闪亮应用程序中包含图像,你可以调用

shiny::img(src = "imgName.png")
Run Code Online (Sandbox Code Playgroud)

在您的 ui 函数中具有以下目录结构:

| shinyApp/
    | ui.R
    | server.R
| www/
    | myImage.png
Run Code Online (Sandbox Code Playgroud)

如何在一个闪亮的应用程序(也是一个 r 包)中复制它?我尝试以完全相同的方式执行所有操作,但使用以下目录结构,但没有成功:

| packageName/
    | R
        | app.R # contains ui.R and server.R
    | inst
        | www
            | imgName.png
Run Code Online (Sandbox Code Playgroud)

就其价值而言,就我而言,该包实际上捆绑了一个闪亮的模块,但我认为这与此问题无关。

编辑:使用此包演示我的问题的最小示例

Geo*_*any 6

用于addResourcePath添加对 Shiny Web 服务器可见的目录。

如文档https://shiny.rstudio.com/reference/shiny/1.0.2/addResourcePath.html所述

使用给定的路径前缀将静态资源目录添加到 Shiny 的 Web 服务器。主要供包作者为其组件提供支持的 JavaScript/CSS 文件。

它应该允许您引用包中的任何文件。


小智 5

Divad Nojnarg 的“ CaPO4 sim ”可以找到一个工作示例,如我提出的有关在shinydashboardPlus 用户描述中引用本地图标文件的问题中所述。

总之,引用本地图像文件的一种方法是在目录zzz.R中添加文件R/

.onAttach <- function(libname, pkgname) {
  shiny::addResourcePath('www',
                         system.file('www',
                                      package = 'DailyMeasure'))
}
Run Code Online (Sandbox Code Playgroud)

其中包名称是DailyMeasure

图像文件位于inst/www/imgname.png.

该文件在 Shiny 的服务器部分被引用,如下所示......

output$user <- shinydashboardPlus::renderUser({
  shinydashboardPlus::dashboardUser(
    name = UserConfig()$Fullname[UserConfig()$AuthIdentity == Sys.info()[["user"]]],
    src = 'www/imgname.png', # this depends on addResourcePath in zzz.R
    subtitle = Sys.info()[["user"]], ... )})
Run Code Online (Sandbox Code Playgroud)