如果在renderImage

问题描述

我试图在基于Shiny的服务中启用图像交互。但是,我找不到解决Shiny允许在错误区域进行交互的问题的解决方案。

这(出于演示目的,代码过于简化)是不起作用的代码的示例:

library(shiny)

# Define UI ----
ui <-  fluidPage(
              imageOutput("ref1",click="ref1_click",dblclick = "ref1_dblclick",brush = brushOpts(id = "ref1_brush",resetonNew = TRUE),)
)

# Define server ----
server <- shinyServer(function(input,output,session){

  output$ref1 <- renderImage({
        return(list(
        src = "images/E12image.png",contentType = "image/png",width = "500px"
        ))
    
},deleteFile = F)
})

# Run the app ----
shinyApp(ui = ui,server = server)

例如,如果尝试使用此Shiny笔刷操作,将仅允许刷刷下图所示的区域(如果clip = TRUE,如果为FALSE,则允许刷刷图像及其周围区域,但不限于此)合理的方式。)

enter image description here

但是,如果我按如下方式修改代码(只需减小固定的图像大小):

  output$ref1 <- renderImage({
        return(list(
        src = "images/E12image.png",contentType = "image/png"
        ))

它可以很好地刷整个图像。遍历各种组合之后,似乎每次交互都会失败,就像我每次在renderImage()中设置任何固定图像大小时所描述的那样,而与UI imageOutput()中的任何固定/动态图像大小设置无关。但是,如果我未在renderImage()中设置任何图像大小,则无法使图像很好地缩放到整个应用程序中的布局之类的网格中。我首先想到的是,由于布局之类的网格,交互失败,但是,即使在每页单个图像的情况下,交互也会发生。

clip = T / F调整此行为,如果我在renderImage()中设置了固定的图像大小,brush(able)区域会放大到左上角。所有这些听起来都像是问题出在线的某个位置,renderImage()首先为绘图区域(= brush(able)区域)设置了固定大小,然后图像(实际上很大)被缩小以适应约束并按比例缩放等效绘制区域。然后,我们获得了较小的图像,其左上角的绘图区域更小。

或者我看不到其他逻辑。

我想在图像上启用笔刷功能,以使坐标与图像相关(实际上很大,页面显示的是较小比例的版本)。

有什么见解吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)