簡體   English   中英

在 R Shiny 中顯示本地存儲的圖像

[英]Display locally-stored image in R Shiny

我花了相當多的時間試圖解決這個問題。 當然,在在這里分享我的問題之前,我做了功課。

特別是我沒有成功咨詢:

  1. 沒有 img(src()) 的閃亮應用程序中的本地圖像?
  2. Shiny不能在本地顯示Image
  3. 將帶有 html 的本地圖像添加到 Shiny 應用程序
  4. UI 端的 R Shiny img() 不渲染圖像
  5. 在閃亮的 R 中顯示來自網絡的圖像
  6. 圖像無法在 R 閃亮中顯示
  7. 在 Shiny 應用程序中嵌入圖像
  8. 如何在 R Shiny 標題中放置圖像

因此,我確實在 RStudio 項目文件的根目錄下創建了一個“www”文件夾,我在其中放置了一些圖片。

這些圖片在 titlePanel 中使用,但也由應用程序調用的主 htmlwidget 使用。

將這些圖片存儲在本地對我來說至關重要,因為該應用程序可能在安全環境中運行,而無需訪問 Internet。

我嘗試了這些圖片的相對路徑和絕對路徑:沒有顯示圖片。

然后我注意到了一些不一致:只有當我通過 RStudio 中的常規命令“運行選定的行”運行應用程序時,我才會遇到這個問題。 另一方面,當我通過專用命令“運行應用程序”(在 RStudio 的右上角,綠色箭頭)運行應用程序時,我不再有這個問題,圖片顯示很好(但輸入數據是以某種方式進行了檢查,並且在啟動應用程序之前需要花費大量時間)。

最初我認為顯示本地圖像會比存儲在 Internet 上的遠程圖像容易得多,但似乎恰恰相反。

因此我的問題:

  1. 你知道為什么我們可以觀察到這種差異(這對我來說是不一致的)?
  2. 你知道我如何仍然可以繼續使用常規執行命令(“運行選定的行”)嗎?

此致,

奧利維爾

管理目錄可能很棘手。

您可以使用here包使處理 R 項目中的目錄變得更加容易,請參閱對 here 包的頌歌

打開項目后,可以通過以下方式輕松訪問www圖像:

here::here('www/myimage.jpg')

這也適用於采購應用程序或腳本。

對我來說,通過在 RStudio 中Run Selected Line(s)運行應用程序時,以下內容也適用:

library(shiny)

# create some local images
if(!dir.exists("myimages")){
  dir.create("myimages")
}

myPlotPaths <- paste0("myimages/myplot", seq_len(3), ".png")

for (myPlot in myPlotPaths) {
  png(file = myPlot, bg = "transparent")
  plot(runif(10))
  dev.off() 
}

myImgResources <- paste0("imgResources/myplot", seq_len(3), ".png")

# Add directory of static resources to Shiny's web server
addResourcePath(prefix = "imgResources", directoryPath = "myimages")

ui <- fluidPage(
  tags$img(src = myImgResources[1], width = "400px", height = "400px"),
  tags$img(src = myImgResources[2], width = "400px", height = "400px"),
  tags$img(src = myImgResources[3], width = "400px", height = "400px")
)

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

shinyApp(ui, server)

我沒有具體的答案,但哈德利在“掌握閃亮”一書中的“圖形”章節下展示了一個示例,說明如何顯示本地存儲的圖像。 這本書正在開發中,應該很快就會發布,我將粘貼該章節的鏈接:

圖形章節

該示例在圖像部分下。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM