Изображение рендеринга НЕ ОТОБРАЖАЕТСЯ — R блестящий (только текст alt)

#r #shiny

#r #блестящий

Вопрос:

Используя приведенный ниже код, я получаю только текст alt. Любые предложения о том, в чем может быть проблема?

С сервера.R:

 output$face <- renderImage({
list(src = "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png",
filetype = "image/png",
alt = "YOU MUST BE KIDDING ME!")
}, deleteFile = FALSE)
  

Из ui.R:

 imageOutput("face")
  

Спасибо,

Чад

Добавление к объяснению проблемы — я не просто пытаюсь отобразить изображение. Скорее, я пытаюсь сделать его реактивным — и отображать другое изображение на основе входных данных… для сервера.Код R ниже:

 output$imagegauge <- renderImage({
if (is.null(IRR_calc()))
return(NULL)

if (IRR_calc() > .085) {
return(list(
src = "http://www.i2symbol.com/images/abc-123/o/white_smiling_face_u263A_icon_256x256.png",
contentType = "image/png",
alt = "Smiley Face"
))
} else  {
return(list(
src = "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png",
filetype = "image/png",
alt = "Sad Face"
))
}
}, deleteFile = FALSE)
  

Еще раз спасибо,

Чад

Ответ №1:

renderImage принимает файл в качестве src входных данных, а не URL. Вы можете просто включить это изображение напрямую, используя tags$img :

 library(shiny)
runApp(list(
  ui = fluidPage(
    titlePanel("Hello Shiny!"),
    sidebarLayout(
      sidebarPanel(
        numericInput('n', 'Number of obs', 100),
        numericInput('m', 'Select image (Happy (1) or Sad(2))', 1, min = 1, max = 2),
        uiOutput('test')
      ),
      mainPanel(
        plotOutput('plot')
      )
    )
  ),
  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })
    output$test <- renderUI({
      images <- c("http://www.i2symbol.com/images/abc-123/o/white_smiling_face_u263A_icon_256x256.png"
                  , "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png")
      tags$img(src= images[input$m])

    })
  }
))
  

введите описание изображения здесь

Комментарии:

1. Спасибо. Тем не менее, я был немного упрощен в запросе. Я не просто пытаюсь отобразить изображение. Мне нужно, чтобы изображение было реактивным — отображало другое изображение на основе входных данных. Итак, я добавлю больше кода в последующем:

2. @cnblevins Я обновил свой ответ. Вам все равно нужно использовать только img$src вы можете создать динамическое изображение, используя renderUI и uiOutput . В вашем примере внутренняя норма возврата будет определять, какое изображение отображать.