我有以下代码,它应该生成一个图像为背景的简单页面
r <- matrix(runif(9, 0, 1), 3)
g <- matrix(runif(9, 0, 1), 3)
b <- matrix(runif(9, 0, 1), 3)
col <- rgb(r, g, b)
dim(col) <- dim(r)
library(grid)
jpeg(filename="image.jpg")
grid.raster(col, interpolate=FALSE)
dev.off()
library(Rook)
server <- Rhttpd$new()
server$add(
app=function(env){
req <- Rook::Request$new(env)
res <- Rook::Response$new()
#....# r code
res$write('
<!DOCTYPE html>
<html>
<head>
<style>
body
{
background-image: url("image.jpg");
}
</style>
</head>
<body>
<h1>Hello World!</h1>
</h1>
</body>
</html>')
res$finish()
},
name='webApp'
)
server$start(quiet=TRUE)
server$browse("webApp")
但是,它没有显示图像。我目前在css
标记中使用了大量<head>
样式格式,但只有background-image
似乎不起作用...(只是将函数res$write
中的所有内容导出到{ {1}}文件和浏览器打开确实显示图像)
编辑:
注意:不幸的是,相对或绝对路径没有任何区别。 Firebug和chrome dev工具都显示css行,不显示错误。你们中的任何人都能看到运行上面例子的背景图片吗?
答案 0 :(得分:1)
路径问题。 TLDR。添加你的工作目录并给它一个名字(例如pic)
尝试以下方法:
library(Rook)
server <- Rhttpd$new()
r <- matrix(runif(9, 0, 1), 3)
g <- matrix(runif(9, 0, 1), 3)
b <- matrix(runif(9, 0, 1), 3)
col <- rgb(r, g, b)
dim(col) <- dim(r)
library(grid)
jpeg(filename="image.jpg")
grid.raster(col, interpolate=FALSE)
dev.off()
server$add(app = File$new(getwd()), name = 'pic')
server$add(
app=function(env){
req <- Rook::Request$new(env)
res <- Rook::Response$new()
#....# r code
res$write('
<!DOCTYPE html>
<html>
<head>
<style>
body
{
background-image: url("pic/image.jpg");
}
</style>
</head>
<body>
<h1>Hello World!</h1>
</h1>
</body>
</html>')
res$finish()
},
name='webApp'
)
server$start(quiet=TRUE)
server$browse("webApp")
编辑: 尝试使用临时目录:
jpeg(filename=paste0(tempdir(), "/image.jpg"))
和
server$add(app = File$new(tempdir()), name = 'pic')