我有以下数据框,可以从here下载。列image_path
包含base64格式的jpg文件。我想提取图像并将其存储在本地文件夹中。我尝试使用here和here给出的代码。
虽然第二个完全打开浏览器中的图像,但我无法弄清楚如何在本地保存文件。我尝试了以下代码:
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号作为文件名将本地图像保存为jpg,可以使用调查中捕获的各种其他详细信息进行渲染。
我从未使用过图像,如果这完全是新手,请耐心等待。
答案 0 :(得分:1)
这将从base64字符串创建您的图像,并将文件保存到您当前的工作目录,子文件夹&#34; / images /&#34; 。 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)
}