renderImage
renderImage(expr, env = parent.frame(), quoted = FALSE, deleteFile = TRUE)
Arguments
expr | An expression that returns a list. |
---|---|
env | The environment in which to evaluate
expr . |
quoted | Is expr a quoted expression (with
quote() )? This is useful if you want to save an
expression in a variable. |
deleteFile | Should the file in func()$src be
deleted after it is sent to the client browser? Generally
speaking, if the image is a temp file generated within
func , then this should be TRUE ; if the
image is not a temp file, this should be FALSE . |
Image file output
Description
Renders a reactive image that is suitable for assigning to an output
slot.
Details
The expression expr
must return a list containing the attributes for
the img
object on the client web page. For the image to display,
properly, the list must have at least one entry, src
, which is the
path to the image file. It may also useful to have a contentType
entry specifying the MIME type of the image. If one is not provided,
renderImage
will try to autodetect the type, based on the file
extension.
Other elements such as width
, height
, class
, and
alt
, can also be added to the list, and they will be used as
attributes in the img
object.
The corresponding HTML output tag should be div
or img
and have
the CSS class name shiny-image-output
.
Examples
## <strong>Not run</strong>: # # shinyServer(function(input, output, clientData) { # # # A plot of fixed size # output$plot1 <- renderImage({ # # A temp file to save the output. It will be deleted after renderImage # # sends it, because deleteFile=TRUE. # outfile <- tempfile(fileext='.png') # # # Generate a png # png(outfile, width=400, height=400) # hist(rnorm(input$n)) # dev.off() # # # Return a list # list(src = outfile, # alt = "This is alternate text") # }, deleteFile = TRUE) # # # A dynamically-sized plot # output$plot2 <- renderImage({ # # Read plot2's width and height. These are reactive values, so this # # expression will re-run whenever these values change. # width <- clientData$output_plot2_width # height <- clientData$output_plot2_height # # # A temp file to save the output. # outfile <- tempfile(fileext='.png') # # png(outfile, width=width, height=height) # hist(rnorm(input$obs)) # dev.off() # # # Return a list containing the filename # list(src = outfile, # width = width, # height = height, # alt = "This is alternate text") # }, deleteFile = TRUE) # # # Send a pre-rendered image, and don't delete the image after sending it # output$plot3 <- renderImage({ # # When input$n is 1, filename is ./images/image1.jpeg # filename <- normalizePath(file.path('./images', # paste('image', input$n, '.jpeg', sep=''))) # # # Return a list containing the filename # list(src = filename) # }, deleteFile = FALSE) # }) # # ## <strong>End(Not run)</strong>
See also
For more details on how the images are generated, and how to control the output, seeplotPNG
.