GOOGLE ADS

Samstag, 16. April 2022

R Glänzend - Bild in der Benutzeroberfläche anzeigen

Ich versuche, ein Bild aus dem www-Ordner zu laden (dieser Teil funktioniert) und verwende dann den Bildnamen, um es in der Benutzeroberfläche anzuzeigen. Wenn ich dies versuche, erhalte ich die folgende Fehlermeldung:
Warnung: Fehler in Katze: Argument 1 (Typ „Schließung") kann nicht von „Katze" behandelt werden

Hier ist der ziemlich einfache Code '''

library(shiny)
library(imager)
setwd("E:/CIS590-03I Practical Research Project/Project")
# ui object
ui <- fluidPage(
titlePanel(p("Dog Breed Classification", style = "color:#3474A7")),
sidebarLayout(
sidebarPanel(
fileInput("image",
"Select your image:", placeholder = "No file selected"),
tags$head(
tags$style("body.sidebar {background-color: white; }",
".well {background-color: white;}"),
),


p("Image to categorize"),

),
mainPanel(htmlOutput("testHTML"),
)
)
)
# server()
server <- shinyServer(function(input, output) {

output$testHTML <- renderText({
paste("<b>Selected image file is: ", input$image$name, "<br>")

reactive(img(
src = input$image$name,
width = "250px", height = "190px"

))
})
})
# shinyApp()
shinyApp(ui = ui, server = server)

'''

Jede Hilfe wird sehr geschätzt. Danke Bill.


Lösung des Problems

Der Grund, warum Sie die Fehlermeldung erhalten, liegt darin, dass renderTextanstelle des Bild-HTML-Tags eine reaktive Funktion zurückgegeben wird. reactivesollte in keiner render...Funktion erscheinen.

Wie @MrFlick erwähnt hat, renderTextwird nur eine Zeichenfolge an die Benutzeroberfläche zurückgegeben. Eine Alternative für renderUIund uiOutputist renderImageund imageOutput. Diese fügen das hochgeladene Bild auf bequeme Weise zur Benutzeroberfläche hinzu, da die Renderfunktion nur eine Liste von Attributen benötigt, um das imgTag zu geben. Dies ermöglicht auch das einfache Einfügen von Bildern, die sich nicht im wwwVerzeichnis befinden.

In der Lösung unten habe ich reqdie Renderfunktionen eingebaut, damit keine Fehlermeldungen erscheinen, wenn kein Bild hochgeladen wurde.

library(shiny)
ui <- fluidPage(
tags$head(
tags$style(
".sidebar {background-color: white;}",
".well {background-color: white;}",
".title-text {color: #3474A7;}"
)
),
h2(
class = "title-text",
"Dog Breed Classification"
),
sidebarLayout(
sidebarPanel(
fileInput(
"image",
"Select your image:",
placeholder = "No file selected"
),
p("Image to categorize")
),
mainPanel(
tags$p(textOutput("filename", container = tags$b)),
imageOutput("testHTML")
)
)
)
server <- function(input, output) {
output$filename <- renderText({
req(input$image)
paste("Selected image file is:", input$image$name)
})

output$testHTML <- renderImage({
req(input$image)
list(
src = input$image$datapath,
width = "250px",
height = "190px"
)
}, deleteFile = TRUE)
}
shinyApp(ui = ui, server = server)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...