可以通过脚本非交互式地批量生成HTML5 canvas API图像吗?

2 投票
2 回答
1444 浏览
提问于 2025-04-17 10:38

目前,当我需要为科学可视化创建一些图像时(通常是从CSV文件或其他数据容器中获取),我会使用Python作为脚本语言,Cairo作为绘图工具。这样我可以运行一个脚本,然后得到一堆.png格式的文件。

虽然Cairo是一个很不错的绘图工具,但我发现Canvas除了更流行之外,还有一些操作(比如合成和阴影),可以用来创建更复杂的图形,还有其他潜在的好处。

我看到的主要问题是Canvas是基于浏览器的,所以我觉得脚本可能需要调用一个可以编程的浏览器,这样才能使用真正的Canvas渲染引擎。我甚至不知道“可编程浏览器”(通过命令行)这个概念是否存在。

另一个不太大的问题是需要一个运行中的HTTP服务器,但我觉得Python提供的SimpleHTTPServer应该可以正常工作。

有什么想法吗?

感谢阅读,希望这对未来更多的人有所帮助。

2 个回答

2

那< a href="http://phantomjs.org/" rel="nofollow">PhantomJS怎么样呢?它有一个render方法,可以输出图片;你可以查看一下接口文档

1

这个想法真不错!

你可以写个脚本来打开浏览器并创建图片,不过保存这些图片可能会有点麻烦。

你可以写一个HTML文件,把你的脚本放进去,然后用Python的webbrowser模块来打开这个文件,显示在浏览器窗口里。你可以搭建一个简单的网页服务器,或者用file://的方式来打开。

搭建一个简单的网页服务器可能是个好主意,因为对file://的支持不一定可靠,即使是在“同一个域名”下。

你可以写JavaScript来处理一个任意的(本地)URI,使用XHR来获取它的内容并进行处理。一个简单的方法是从片段字符串中解析出这个本地URI——这虽然有点不太靠谱,但在Twitter上也有用,所以应该不会太糟糕吧?

然后把每张图片渲染到画布上,看看Eli Grey的FileSaver,你可能需要点击按钮很多次才能保存所有的图片。

祝你好运——我很想知道结果如何。

撰写回答