图像的 Base64 编码是 R Studio Markdown 中一个非常酷的小功能,它可以创建易于分发或共享的所有 HTML 页面。无需担心将图像作为单独的文件。浏览器知道如何处理它。
我也想将此功能扩展到编码 CSV 文件。看看他们现在是如何做的,看起来他们正在将信息传递给 .Call 并使用 C/C++ 对文件信息进行编码。
来自(第 177 和 192 行):https ://github.com/rstudio/markdown/blob/master/R/renderMarkdown.R
.b64EncodeFile <- function(inFile)
{
fileSize <- file.info(inFile)$size
if (fileSize > 0){
paste( "data:", .mimeType(inFile),";base64,",
.Call(rmd_b64encode_data,readBin(inFile,'raw',n=fileSize)),
sep='')
} else {
warning(inFile,'is empty!')
inFile
}
}
.b64EncodeImages <- function(html)
{
reg <- "<\\s*[Ii][Mm][Gg]\\s+[Ss][Rr][Cc]\\s*=\\s*[\"']([^\"']+)[\"']"
m <- gregexpr(reg,html,perl=TRUE)
if (m[[1]][1] != -1)
{
.b64EncodeImgSrc <- function(imgSrc)
{
inFile <- sub(reg,"\\1",imgSrc)
if (length(inFile) && file.exists(inFile))
imgSrc <- sub(inFile,.b64EncodeFile(inFile),imgSrc,fixed=TRUE)
imgSrc
}
regmatches(html,m) <- list(unlist(lapply(regmatches(html,m)[[1]],.b64EncodeImgSrc)))
}
html
}
现在,我如何使用 CSV 文件完成同样的事情?重要的是,我如何让浏览器理解它。