#r #shiny #shinydashboard #shinyapps #rshiny
Вопрос:
Я создаю приложение для визуализации изображений с помощью rshiny. У меня есть 10 разных папок, и в каждой папке 300 изображений. Я не хотел помещать все эти 3000 изображений в одну папку www. Есть ли какой-либо способ, которым я могу закодировать в серверном скрипте, чтобы я мог перейти в относительную папку и найти нужное изображение, которое я ищу.
Я ищу официальный сайт rshiny, там написано:
img(src = "my_image.png", height = 72, width = 72)
Функция img ищет файл изображения в определенном месте. Ваш файл должен находиться в папке с именем www в том же каталоге, что и сценарий app.R. Shiny относится к этому каталогу по-особому. Shiny будет делиться любым файлом, размещенным здесь, с веб-браузером вашего пользователя, что делает www отличным местом для размещения изображений, таблиц стилей и других вещей, которые потребуются браузеру для создания компонентов wep вашего приложения Shiny.
Я буду использовать пример веб-сайта 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 изображений.
Я надеюсь, что смогу получить некоторую помощь. Спасибо!
Ответ №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)