【问题标题】:Is it possible to render the output of a javascript script as a jpeg instead of a web page?是否可以将 javascript 脚本的输出呈现为 jpeg 而不是网页?
【发布时间】:2014-06-09 16:27:11
【问题描述】:

一位名叫 Cameron Beccario 的出色程序员创建了一个网页 - http://www.earth.nullschool.net-,该网页根据当前天气模型绘制出全球风矢量。我需要以某种方式以图像序列或 MPEG-4 的形式在网站上获取输出,但每帧必须为 4096x2048 像素。显然,截图是行不通的。我可以访问 Github 上的源代码,该代码似乎是一组 javascript 库,它们与 Beccario 先生自己编写的一个 javascript 对象“地球”进行交互(以及一些 CSS 等)似乎与我的问题有关)。我的目标是将这张地图投影到一个六英尺的球形屏幕上(不要问),我无法修改将平面地图转换为球形投影的软件。所以本质上,我需要以某种方式将网页的内容以高分辨率投影到一个非常大的屏幕上。

我尝试过的(没有用):

  • 浏览源代码并尝试插入脚本以将 javascript 的输出重定向到图像文件中。根据我更博学的同事的说法,这行不通,因为一个名为 d3.js 的库正在执行实际渲染,它并不像“javascript 的输出成为 d3 的输入”那么简单,我编写了一个简单的脚本来放置而是输入到 jpeg 文件中。”
  • 各种截屏软件。
  • 找到一个可以接受 Javascript 输入并在网页上下文之外处理它的库。即使我确实找到了,我也不确定这是否可行,无论如何,我还没有。

我想知道的:

  • 是否有库可以替换此代码中的 d3,并将 javascript 渲染为高分辨率图像?
  • 我的一位同事建议“将地图包装在浏览器中”。他没有机会解释他的意思,有谁知道这是否是投射详细视频或图像序列的有效方法?
  • 有人知道其他方法吗?

提前感谢您的智慧之言。

【问题讨论】:

  • 有几十个问题/答案涉及将 D3 生成的 SVG 渲染为 JPG、PNG、PDF 等。我相信你可以用一点点找到它们搜索。
  • 是的,有。但是,我遇到的没有一个是处理获得比屏幕最初提供的分辨率更高的分辨率,或者是不断重新渲染源。我的问题是这个网站根本没有创建 SVG。它使用 HTML5 画布功能不断重绘 div 中的图层(它有三个)。我可能会遗漏一些相关的东西;如果是这样,如果您能提出一个可能有帮助的具体问题,我将不胜感激。

标签: javascript d3.js io


【解决方案1】:

我本来打算推荐wkhtmltopdf,它可以直接从支持JS的站点生成图片,并且可以指定设备设置(包括大屏)。但是,我认为这对您的目的不起作用,因为图像源在不断变化。我真的认为最好的办法是找到一个类似的工具,可以用来从网站创建截屏视频。

除此之外,还有一种迂回的方法可能会得到你想要的。使用免费的虚拟机,您可以设置一个具有高分辨率屏幕(例如 4096x2048)的虚拟机,然后使用它对 mp4 进行屏幕截图。

【讨论】:

  • 感谢托比拉罗尼。我会尝试第二个;我一直在寻找可以完成第一个的软件或脚本,但没有找到任何东西。
猜你喜欢
  • 2019-12-14
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多