这是我首次尝试创建Shiny应用程序,因此我想做一些非常简单的事情:使用fileInput
,以便用户可以选择计算机上的图像,然后renderImage
绘制图像。
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("plot image"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
fileInput("image",
"Select your image:", placeholder = "No file selected")
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("photo")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$photo <- renderImage({
img <- load.image(input$image)
plot(img)
})
}
# Run the application
shinyApp(ui = ui, server = server)
但是,当我尝试以此加载图像时,出现错误:无效的文件名参数。
最终,我想集成selectInput
的{{1}}选项将具有一些默认图像以及用户使用choices
上传的图像,但是我觉得我已经在前进我自己。
fileInput
答案 0 :(得分:0)
请参见?fileInput
。如果"image"
是id,则上载文件的路径是input$image$datapath
,而不是input$image
。
因此您可以执行以下操作:
output$photo <- renderImage({
req(input$image)
list(src = input$image$datapath, alt="alternative text")
})
和ui
中的
imageOutput("photo")
答案 1 :(得分:0)
我遇到了同样的问题并解决了。无法加载图像是因为input$image
不仅提供了所需的文件名,还提供了更多信息。这使其成为一个命名列表,而不是单个值。也许您可以在第一种情况下尝试以下方法。
server <- function(input, output) {
output$photo <- renderImage({
img <- load.image(input$image[[4]])
plot(img)
})
}
希望它能起作用。