R 单击闪亮应用程序中调整大小的图像上的坐标';覆盖完整图像

R 单击闪亮应用程序中调整大小的图像上的坐标';覆盖完整图像,r,image,shiny,imagemagick,shiny-reactivity,R,Image,Shiny,Imagemagick,Shiny Reactivity,我的应用程序通过添加边框来调整图像大小。然后,我需要在修改后的图像上的任意位置收集带有边框的单击坐标。这似乎不适用于动态大小的图像输出 下面的代码生成一个应用程序,您可以在其中看到双击的x坐标。请注意,如果没有边框,x坐标将更新整个图像范围——从左到右单击可以看到整个范围的值。但是,当添加边框时,X坐标在中间停止,并且在图像右侧点击时不更新。 如果我在渲染中删除动态确定的宽度和高度(例如,会话$clientData$output\u img\u width),它将按预期工作 是否有一种方法可以动

我的应用程序通过添加边框来调整图像大小。然后,我需要在修改后的图像上的任意位置收集带有边框的单击坐标。这似乎不适用于动态大小的图像输出

下面的代码生成一个应用程序,您可以在其中看到双击的x坐标。请注意,如果没有边框,x坐标将更新整个图像范围——从左到右单击可以看到整个范围的值。但是,当添加边框时,X坐标在中间停止,并且在图像右侧点击时不更新。 如果我在
渲染
中删除动态确定的宽度和高度(例如,
会话$clientData$output\u img\u width
),它将按预期工作

是否有一种方法可以动态创建图像大小和完全单击坐标

谢谢

library(shiny)
library(magick)

img <- image_read("https://jeroen.github.io/images/frink.png")

ui <- fluidPage(
    sliderInput("border", "Border Size", 0, 100, 0),
    verbatimTextOutput("coords", placeholder = TRUE),
    imageOutput("img",  
                dblclick = "img_dblclick")
    )


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

    updatedImageLoc <-reactiveVal(value = NULL)

    observe({
        file.saved.to.disk <- img %>%
            image_border("red",
                         geometry = paste0(input$border * 10,
                                           "x",
                                           input$border * 10)) %>%
            image_write(tempfile(fileext = "test.png"))

        updatedImageLoc(file.saved.to.disk)
    })

    output$coords <- renderText({ paste("Double-click x coord is:",input$img_dblclick$x) })

    output$img <- renderImage({
            # Read width and height. These are reactive values, so this
            # expression will re-run whenever these values change.
            width  <- session$clientData$output_img_width
            height <- session$clientData$output_img_height

            # Return a list
            list(src = updatedImageLoc(), 
                 contentType = paste0("image/png"),
                 width = width,
                 height = height)
        }, 
        ## DO NOT DELETE THE FILE!
        deleteFile = FALSE
    )
}

# Run the application 
shinyApp(ui = ui, server = server)

库(闪亮)
图书馆(magick)
img