首页 > 解决方案 > 如何将图像放置在作为函数调用的闪亮应用程序中?

问题描述

我知道将包中的图像嵌入闪亮应用程序的唯一方法需要传统的闪亮模板,即 app.R,并且需要将图像放在 www/ 文件夹中

但是,我有一个传统的 R 包(不是传统的闪亮模板),它里面的许多功能之一R/是启动闪亮应用程序的功能。该函数进行一些数据预处理,指定 ui 和 server,然后调用runApp(shinyApp(ui, server)).

我当然可以为src参数提供一个图像 url,但图像只会在用户可以访问互联网时显示,并且我想包含在包本身中,这样它将从包中获取图像,而不是 url。我尝试在包中创建 www/ 文件夹并为src参数指定图像路径,但没有成功...

如何在 R 包目录中设置图像,以便我可以成功获取而不需要互联网连接来查看图像?请参阅下面需要互联网连接的当前方法的代表:

library(shiny)
launchShiny <- function(data){
  #example of some data preprocessing
  appdata <- as.data.frame(data)
  
  ui <- fluidPage(
    titlePanel(title = span(" ", tags$a(href = "#!", class = "brand-logo", tags$img(height = 100, width = 420, style = "padding-bottom: 0px", src = "https://i.ibb.co/d0btktV/why.png")), "")),
    dataTableOutput("mydata")
  )
  
  server <- function(input, output, session)
    output$mydata <- renderDataTable(
      appdata
    )
  
  runApp(
    shinyApp(ui, server)
  )
}
launchShiny(mtcars)

标签: rshiny

解决方案


一种选择是将 base64 字符串传递给src参数:

b64 <- base64enc::dataURI(file = "why.png", mime = "image/png")
tags$img(src = b64, ......)

推荐阅读