在 R - Shiny 中将 base64 JPG 保存到磁盘
Save base64 JPG to disk in R - Shiny
我有以下数据框,可以从 here. The column image_path
has jpg files in base64 format. I want to extract the image and store it in a local folder. I tried using the code given and 下载。
虽然第二个可以在浏览器中完美打开图像,但我不知道如何在本地保存文件。我尝试了以下代码:
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()
}
以下只是 运行s,但不会创建任何图像文件,也不会显示任何错误。当我尝试 运行ning tags$img(src = df$image_path[1])
查看它是否生成图像时,它没有。我知道 tags$img 是 shiny 中的一个函数,当我在 ui 中传递它时可以工作(正如@daatali 所建议的),但不确定如何在本地保存文件。
我想要的是 运行 从闪亮的服务器环境内部进行 for 循环,并使用 ID 号作为文件名在本地将图像保存为 jpg,可以使用调查中捕获的各种其他细节进行渲染.
我从未使用过图像,如果这完全是新手,请多多包涵。
这会从 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)
}
我有以下数据框,可以从 here. The column image_path
has jpg files in base64 format. I want to extract the image and store it in a local folder. I tried using the code given
虽然第二个可以在浏览器中完美打开图像,但我不知道如何在本地保存文件。我尝试了以下代码:
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()
}
以下只是 运行s,但不会创建任何图像文件,也不会显示任何错误。当我尝试 运行ning tags$img(src = df$image_path[1])
查看它是否生成图像时,它没有。我知道 tags$img 是 shiny 中的一个函数,当我在 ui 中传递它时可以工作(正如@daatali 所建议的),但不确定如何在本地保存文件。
我想要的是 运行 从闪亮的服务器环境内部进行 for 循环,并使用 ID 号作为文件名在本地将图像保存为 jpg,可以使用调查中捕获的各种其他细节进行渲染.
我从未使用过图像,如果这完全是新手,请多多包涵。
这会从 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)
}