2017-12-14 22 views
2

DT 패키지의 R 데이터 테이블에 이미지를 추가하려고합니다. 나는이 질문에 답한다 : How to embed an image in a cell a table using DT, R and Shiny 그리고 그것은 온라인 인 이미지에서 작동한다. 그러나 내가 로컬로 가지고있는 이미지를 추가하려고 시도했을 때 (R으로 생성되었습니다) 그냥 나타나지 않습니다.R의 데이터 테이블에 이미지 추가

x = rnorm(1000) 
png(paste0("Graficas/test.png")) 
Plot = plot(x, type = "l") 
dev.off() 
camino = '<img src="Graficas/test.png" height="30"></img>' 
data = data.frame(0.5,camino) 
datatable(data, escape = FALSE) 

출력이 enter image description here

내가 그

답변

2

을이되어 발생하는 한 가지 방법은 base64로 인코딩 된 이미지를 삽입하여 (그것을 할 이유를 이해 할 수없고이 내 문제의 예입니다 src의 경우). 우리가 data uri을 드릴 것입니다

img_uri <- function(x) { sprintf('<img src="%s"/>', knitr::image_uri(x)) } 

:

는 처음에 우리는 작은 도우미를 만들 수 있습니다. 우리는 전체 파일을 slurping하여 base64로 변환 한 다음 전체 BLOB를 src 속성에 고정하기 전에 좀 더 포맷팅을 수행합니다.

x = rnorm(1000) 
png(paste0("test.png")) 
Plot = plot(x, type = "l") 
dev.off() 

camino = img_uri("test.png") 
data = data.frame(0.5 ,camino) 
DT::datatable(data, escape = FALSE) 

는 너의이 문제 B를 가지고있다 :

<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAAAXRSTlPM0jRW/QAAAApJREFUeJxjYgAAAAYAAzY3fKgAAAAASUVORK5CYII=\"/> 

그래서, 우리는 당신이 만든 하나 같은 수행

는 1x1 픽셀은 PNG 같이 그런 식으로 인코딩 된 모습입니다/c "URI"가 아니며 로컬 시스템에서 가져올 방법이 없습니다. URL이 file://… 인 브라우저 컨텍스트에서 작동 할 수 있습니다.

+0

감사합니다,하지만 당신은 img_uir 않습니다 waht 설명 할 수 있습니까? –

+0

완료. 나는 작은 예를 추가했다. – hrbrmstr