You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny应用实现手机相册式图片选择标记功能需求

Shiny应用:图片相册式点击选择与标记功能实现

我开发了一款可加载图片的Shiny应用,需要实现类似手机相册的图片点击选择与标记功能——点击图片即可选中并记录选中状态。目前我实现的逻辑是:选中图片时将其替换为空图标,以下是我的尝试代码:

ui <- fluidPage(column(
                  width=9,
                  align="center",
                  imageOutput(outputId = "img1", click = clickOpts(id = "img1_click", clip = FALSE),width = 150,height = 150,inline = TRUE)
                  ,imageOutput(outputId = "img2", click = clickOpts(id = "img2_click", clip = FALSE),width = 150,height = 150,inline = TRUE)
                  ))

server <- function(input, output, session) {
  empty_img <- "/empty.jpeg"
  vals <- reactiveValues(img = list.files("/images/"))
  vals2 <- reactiveValues(img = list.files("/images/"))
                      
  empty_img_to_normal_value <- reactiveValues(m = 1:length(vals$img))
  
  output$img1 <- renderImage({
    list(src = vals$img[1], width = "200", height = "200") 
  }, deleteFile = FALSE)
  
  observeEvent(input$img1_click, {
    if(empty_img_to_normal_value$m[1] == 1){
      vals$img[1] <- empty_img
      empty_img_to_normal_value$m[1] <- 0
    } else { 
      vals$img[1] <- vals2$img[1]
      empty_img_to_normal_value$m[1] <- 1
    }
  })
  
  output$img2 <- renderImage({
    list(src = vals$img[2], width = "200", height = "200")
  }, deleteFile = FALSE)
  
  observeEvent(input$img2_click, {
    if(empty_img_to_normal_value$m[2] == 1){
      vals$img[2] <- empty_img
      empty_img_to_normal_value$m[2] <- 0
    } else { 
      vals$img[2] <- vals2$img[2]
      empty_img_to_normal_value$m[2] <- 1
    }
  })  
}

内容的提问来源于stack exchange,提问作者tannaz hasanzadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:48:19