2

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

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.html文件中并使用浏览器打开确实会显示图像)

编辑:

注意:不幸的是,相对或绝对路径没有任何区别。Firebug 和 chrome 开发工具都显示 css 行并且没有显示错误。你们中的任何人都可以在运行上述示例的背景中看到图像吗?

4

1 回答 1

1

这是路径的问题。TLDR。添加您的工作目录并为其命名(例如图片)

尝试以下操作:

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')
于 2013-07-08T11:15:40.940 回答