【问题标题】:Add an image into an Rook web app using css使用 css 将图像添加到 Rook Web 应用程序中
【发布时间】:2013-07-03 19:41:58
【问题描述】:

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

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")

但是,它不显示图像。我目前在&lt;head&gt; 标签中使用了很多css 样式格式,但只有background-image 似乎不起作用...(只需将函数res$write 中的所有内容导出到.html 文件并使用浏览器打开即可显示图像)

编辑:

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

【问题讨论】:

  • 图片的位置可能有问题?添加background-image 行的路径有帮助吗?
  • 浏览器有什么问题?也许您可以使用 Firefox 的 Firebug 扩展来追踪错误?任何 404 或其他错误?
  • @JerryWho 我明天会回答你的问题。现在我可以说在普通的 .html 页面中使用准确的 html 代码可以完美地显示图像。
  • @HongOoi 尝试了相对路径和绝对路径
  • 我刚刚删除了css格式并将图像放入&lt;body&gt;标签中。也不去那里。可能是 Rook 根本无法处理背景图片。

标签: r r-rook-package


【解决方案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')

【讨论】:

  • R version 3.0.0 (2013-04-03) Platform: x86_64-w64-mingw32/x64 (64-bit)
  • 您将两个应用添加()到服务器:picwebapp。您在第一个上所做的一切都不会影响第二个。所以,打电话给server$browse("webapp") 你做的和我做的没什么不同。你有没有拼错什么?因为你说它对你有用
  • 需要提供文件。您需要定义一个 rook 应用程序来从您的工作目录提供静态文件。文件类执行此操作。上面的代码对我来说很好。我已经打开了一个干净的 linux R 并从上面获取了具有多色背景的 Hello World。我切换到单独的 Windows 8 机器 64 位。我打开了一个干净的 R 视图并在其中获取代码。我得到了带有多色背景的 Hello world。您的工作目录可能存在一些权限问题。你在某种锁定的机器上吗?您可以尝试使用临时目录。
  • 感谢您的解释,我会尽力理解它......因为我从未使用过这个“需要送达”。我总是将我的应用程序保存在 .R 文件中,然后将 add() 保存到服务器上,就是这样。它总是有效,但现在这个愚蠢的图像不想粘在我的页面上:-)
  • 很高兴听到。文档有点稀疏。 Rook 基于 Ruby 包 Rack,因此有时它也有助于查看 Rack 中的工作方式。
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多