可以通过脚本非交互式地批量生成HTML5 canvas API图像吗?
目前,当我需要为科学可视化创建一些图像时(通常是从CSV文件或其他数据容器中获取),我会使用Python作为脚本语言,Cairo作为绘图工具。这样我可以运行一个脚本,然后得到一堆.png格式的文件。
虽然Cairo是一个很不错的绘图工具,但我发现Canvas除了更流行之外,还有一些操作(比如合成和阴影),可以用来创建更复杂的图形,还有其他潜在的好处。
我看到的主要问题是Canvas是基于浏览器的,所以我觉得脚本可能需要调用一个可以编程的浏览器,这样才能使用真正的Canvas渲染引擎。我甚至不知道“可编程浏览器”(通过命令行)这个概念是否存在。
另一个不太大的问题是需要一个运行中的HTTP服务器,但我觉得Python提供的SimpleHTTPServer
应该可以正常工作。
有什么想法吗?
感谢阅读,希望这对未来更多的人有所帮助。
2 个回答
那< a href="http://phantomjs.org/" rel="nofollow">PhantomJS怎么样呢?它有一个render
方法,可以输出图片;你可以查看一下接口文档。
这个想法真不错!
你可以写个脚本来打开浏览器并创建图片,不过保存这些图片可能会有点麻烦。
你可以写一个HTML文件,把你的脚本放进去,然后用Python的webbrowser模块来打开这个文件,显示在浏览器窗口里。你可以搭建一个简单的网页服务器,或者用file://
的方式来打开。
搭建一个简单的网页服务器可能是个好主意,因为对file://
的支持不一定可靠,即使是在“同一个域名”下。
你可以写JavaScript来处理一个任意的(本地)URI,使用XHR来获取它的内容并进行处理。一个简单的方法是从片段字符串中解析出这个本地URI——这虽然有点不太靠谱,但在Twitter上也有用,所以应该不会太糟糕吧?
然后把每张图片渲染到画布上,看看Eli Grey的FileSaver,你可能需要点击按钮很多次才能保存所有的图片。
祝你好运——我很想知道结果如何。