2

我正在使用 rshiny 构建渲染图像应用程序。我有 10 个不同的文件夹,每个文件夹中有 300 张图像。我不想将所有这 3000 张图像放入一个 www 文件夹中。有什么方法可以在服务器脚本中编码,我可以转到相关文件夹并找到我正在寻找的正确图像。

我搜索了rshiny官方网站,它说:

img(src = "my_image.png", height = 72, width = 72)

img 函数在特定位置查找您的图像文件。您的文件必须位于 app.R 脚本所在目录中名为 www 的文件夹中。Shiny 以一种特殊的方式对待这个目录。Shiny 将与您用户的 Web 浏览器共享此处放置的任何文件,这使得 www 成为放置图像、样式表和浏览器构建 Shiny 应用程序的 wep 组件所需的其他内容的好地方。

我将使用 rshiny 网站的示例

library(shiny)
ui <- fluidPage(
  titlePanel("My Shiny App"),
  sidebarLayout(
    sidebarPanel(),
    mainPanel(
      img(src = "rstudio.png", height = 140, width = 400)
    )
  )
)

server <- function(input, output) {
  
}

shinyApp(ui = ui, server = server)

但是,取而代之的是 www 文件夹中的一张图像。我有 10 个不同的文件夹,每个文件夹中有 300 张图像。

我希望我能得到一些帮助。谢谢!

4

1 回答 1

1

我们可以使用renderImage()它允许传递文件夹路径。这是一个例子:

library(shiny)


ui <- fluidPage(
    titlePanel("My Shiny App"),
    sidebarLayout(
        sidebarPanel(textInput('image_path', label = 'File Path:'),
        actionButton('send_path', 'Get Image')),
        mainPanel(
            imageOutput('my_image'),
            imageOutput('my_path_image')
        )
    )
)

server <- function(input, output) {
 
    output$my_image <- renderImage({
        list(src = '~/test.png') #use ~ to acces the home folder.
    }, deleteFile = FALSE)
    
    observeEvent(input$send_path, {
        
    output$my_path_image <- renderImage({
        list(src = input$image_path) 
    }, deleteFile = FALSE)
    
    })
       
}

shinyApp(ui = ui, server = server)
于 2021-06-19T03:03:43.340 回答