在 R Shiny 应用中,你可以使用 shinyFiles
包中的 shinyDirChoose
函数来选择文件夹,并从该文件夹中加载图像进行交互显示。以下是一个完整的示例,展示了如何实现这一功能。
首先,确保你已经安装了 shiny
和 shinyFiles
包:
install.packages("shiny")
install.packages("shinyFiles")
以下是一个完整的 Shiny 应用示例:
library(shiny)
library(shinyFiles)
ui <- fluidPage(
titlePanel("Image Viewer"),
sidebarLayout(
sidebarPanel(
shinyDirButton("dir", "Choose Directory", "Please select a directory"),
uiOutput("file_selector")
),
mainPanel(
imageOutput("image_display")
)
)
)
server <- function(input, output, session) {
volumes <- c(Home = fs::path_home(), getVolumes()())
shinyDirChoose(input, "dir", roots = volumes, session = session)
selected_dir <- reactive({
parseDirPath(volumes, input$dir)
})
output$file_selector <- renderUI({
req(selected_dir())
files <- list.files(selected_dir(), pattern = "\\.(jpg|jpeg|png|gif)$", full.names = TRUE)
selectInput("file", "Choose an image file", choices = files)
})
output$image_display <- renderImage({
req(input$file)
list(src = input$file, contentType = 'image/png', alt = "Selected Image")
}, deleteFile = FALSE)
}
shinyApp(ui, server)
shinyDirButton("dir", "Choose Directory", "Please select a directory")
:创建一个按钮,用于选择文件夹。uiOutput("file_selector")
:动态生成文件选择器。imageOutput("image_display")
:用于显示选定的图像。volumes <- c(Home = fs::path_home(), getVolumes()())
:定义可用的根目录。shinyDirChoose(input, "dir", roots = volumes, session = session)
:初始化文件夹选择器。selected_dir <- reactive({ parseDirPath(volumes, input$dir) })
:解析选定的文件夹路径。output$file_selector <- renderUI({ ... })
:动态生成文件选择器,列出选定文件夹中的图像文件。output$image_display <- renderImage({ ... })
:渲染选定的图像文件。将上述代码保存为 app.R
文件,然后在 R 控制台中运行:
shiny::runApp("path/to/your/app.R")
这将启动 Shiny 应用,允许你选择一个文件夹并从中选择图像进行显示。
领取专属 10元无门槛券
手把手带您无忧上云