phantomjs输出文件大小:png v gif

时间:2015-10-08 13:38:32

标签: phantomjs png transparency opacity gif

使用phantomjs,您可以选择用于page.render()的文件格式。

我发现我为png获取的文件大小比我为gif获得的大三倍。我不知道png应该比gif更差(在文件大小方面);事实上,我认为png意味着更好。

不幸的是,我有点需要输出到png,因为它支持变量不透明度,但更大的文件大小是一个问题。

那么,有什么方法可以控制png的文件大小?也许改变编码方案或什么?我目前正在使用phantomjs 1.9.8。

1 个答案:

答案 0 :(得分:2)

PhantomJS内部

没有,没有办法让png文件变小,但有办法让它更大(只是为了好玩):

  1. 将文件渲染为png,
  2. 将文件加载到适当大小的画布
  3. 以png或任何其他格式获取画布的数据URI
  4. 解码Base 64部分并写入文件(这样做非常棘手)。
  5. PhantomJS 1.x有一个错误导致文件大量膨胀但有效。

    只有jpeg渲染才能指定质量设置,这将导致较小的文件大小,但jpeg再次不支持透明度。

    你还可以看到PhantomJS 2.0.0是否表现得更好,因为它下面有一个引擎,它比PhantomJS 1.x中的引擎快了近三年。

    PhantomJS之外

    您最好的选择是按原样渲染PhantomJS中的png并使用您喜欢的库对其进行后处理。甚至可以打开它并再次保存它。

    例如,您可以使用子流程模块调用已安装的程序,也可以打开包含此类服务的网页,并上传捕获的文件或base64表示形式。可能性是无穷无尽的。