【问题标题】:RShiny: Input multiple image files and put them into a tableR Shiny:输入多个图像文件并将它们放入一个表格中
【发布时间】:2018-05-24 23:43:42
【问题描述】:

我正在尝试一个项目,以比较用户上传的图像和保存在我的 amazon s3 服务器中的图像。

从 s3 下载时,我正在使用这个:

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

我将输入作为:

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

我的数据框是这样的:

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>")

我正在尝试获得如下输出。

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

在这种情况下,从aws s3下载到“www/”目录的图像在表格中正确显示,但查看上传的图像时出现问题。

我也尝试在 input$image 上使用 file.copy 将其复制到文件夹“www”,但在部署应用程序时它也不起作用。

如何在不使用 renderImage 的情况下查看使用 fileInput 和 View 拍摄的图像?

【问题讨论】:

    标签: r shiny shiny-server


    【解决方案1】:

    我怀疑您的应用在将文件复制到www 之前呈现&lt;img src=...

    一种解决方案是将图像转换为其 base64 编码,然后从其 base64 字符串呈现包含图像的表格。

    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)
      })
    
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多