2017-12-11 5 views
0

Ich versuche ein Projekt in glänzendem zu bearbeiten, um Bilder zu vergleichen, die vom Benutzer hochgeladen wurden und die in meinem Amazon S3-Server gespeichert sind.RShiny: Geben Sie mehrere Bilddateien ein und legen Sie sie in eine Tabelle.

save_object(object=xyz ,bucket = "xyz", file = paste0("www/",xyz,".jpg")) 

wie ich nehme Eingang:

während von s3 Herunterladen ich dies mit

fileInput("image","upload the image") 

ist mein Datenrahmen wie folgt aus:

a$name<- xyz 

a$server_image<- paste0("<img src=",'"',"xyz.jpg",'"'," ","height=",'"',"300",'"',"></img>") 

a$uploaded_image<- paste0("<img src=",'"',input$image$datapath,'"'," ","height=",'"',"300",'"',"></img>") 

I‘ Ich versuche, wie unten ausgegeben zu werden.

output$output_table<-DT::renderDataTable({DT::datatable(a,escape = FALSE)}) 

In diesem Fall wird das Bild von aws s3 in „www /“ Verzeichnis heruntergeladen wird in der Tabelle richtig gezeigt, aber es gibt Probleme mit hochgeladenes Bild angezeigt wird.

Ich habe auch versucht, file.copy auf Eingabe $ Bild zu verwenden, um es in einen Ordner "www" zu kopieren, aber es funktioniert auch nicht, wenn ich die App bereitstellen.

Wie kann ich ein mit fileInput und View aufgenommenes Bild anzeigen, ohne renderImage zu verwenden?

Antwort

0

Ich vermute, dass Ihre App <img src=... rendert, bevor die Datei in www kopiert wird.

Eine Lösung besteht darin, das Bild in seiner base64-Codierung zu konvertieren und dann die Tabelle mit dem Bild aus der Base64-Zeichenfolge zu rendern.

library(shiny) 
library(DT) 

ui <- shinyUI(
    fluidPage(
    fileInput("image", "upload image"), 
    DT::dataTableOutput("table") 
) 
) 

server <- shinyServer(function(input, output) { 

    base64 <- eventReactive(input$image, { 
    base64enc::dataURI(file=input$image$datapath, mime=input$image$type) 
    }) 

    output$table <- DT::renderDataTable({ 
    req(input$image) 
    dat <- data.frame(image = sprintf('<img src=%s height="300"></img>', base64())) 
    datatable(dat, escape=FALSE) 
    }) 

}) 
Verwandte Themen