画像のBase64エンコーディングは、R Studio Markdownの非常に優れた小さな機能であり、配布や共有が簡単な1つの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ファイルで同じことをどのように達成しますか?重要なのは、ブラウザにそれを理解させるにはどうすればよいですか。