使用css将图像添加到Rook Web应用程序中

时间:2013-07-05 16:33:10

标签: r rook

我有以下代码,它应该生成一个图像为背景的简单页面

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行,不显示错误。你们中的任何人都能看到运行上面例子的背景图片吗?

1 个答案:

答案 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')