2016-10-09 87 views
1

我有以下數據框可以從here下載。列image_path具有base64格式的jpg文件。我想提取圖像並將其存儲在本地文件夾中。我嘗試使用代碼herehere將base64 JPG保存到R盤中 - Shiny

雖然第二個完美打開瀏覽器中的圖像,但我無法弄清楚如何在本地保存文件。我試了下面的代碼:

library(shiny) 
for (i in 1:length(df)){ 
file <- paste(df$id[i]) 
png(paste0(~images/file, '.png')) 
tags$img(src = df$image_path[i]) 
dev.off() 
} 

以下只是運行,但不創建任何圖像文件,並沒有顯示錯誤。當我嘗試運行tags$img(src = df$image_path[1])以查看它是否生成圖像時,它不會。我理解標籤$ img是一個閃亮的功能,當我在ui中傳遞它時(正如@daatali所建議的那樣),但不知道如何在本地保存文件。

我想要的是在閃亮的服務器環境中運行for循環,並使用id編號作爲文件名在本地保存圖像,這可以通過調查中捕獲的各種其他細節呈現。

我從來沒有與圖像合作過,如果這是完全新手,請耐心等待。

回答

1

這將從base64字符串創建圖像並將文件保存到您當前的工作目錄子文件夾「/ images /」This article describes pretty well how to save files locally in Shiny.

library(shiny) 
library(base64enc) 
filepath <- "images/" 
dir.create(file.path(filepath), showWarnings = FALSE) 
df <- read.csv("imagefiletest.csv", header=T, stringsAsFactors = F) 
for (i in 1:nrow(df)){ 
    if(df[i,"image_path"] == "NULL"){ 
    next 
    } 
    testObj <- strsplit(df[i,"image_path"],",")[[1]][2] 
    inconn <- testObj 
    outconn <- file(paste0(filepath,"image_id",df[i,"id"],".png"),"wb") 
    base64decode(what=inconn, output=outconn) 
    close(outconn) 
} 

enter image description here

+0

由於一噸....真正體會....已經突破我的頭在過去兩天......這真的幫助....謝謝。 – Apricot