phantomjs 输出文件大小:png v gif
phantomjs output file size: png v gif
与phantomjs you can choose the file format to use for page.render()
.
我发现我获得的 png 文件大小大约是我获得的 gif 文件大小的三倍。我不知道 png 应该比 gif 更糟糕(就文件大小而言);事实上,我认为 png 应该更好。
不幸的是,我有点需要输出到 png,因为它支持可变的不透明度,但较大的文件大小有点问题。
那么,有什么办法可以控制png文件的大小吗?也许改变编码方案或什么的?我目前正在使用 phantomjs 1.9.8.
PhantomJS 内部
没有,没有办法让png文件变小,但是有办法让它变大(好玩):
- 将文件渲染为 png,
- 将文件加载到 canvas 适当大小,
- 以 png 或任何其他格式获取 canvas 的数据 URI,
- 解码 Base 64 部分并写入文件(这很难做到正确)。
PhantomJS 1.x 有一个错误,会导致文件过大但有效。
只有 jpeg 渲染使您能够指定质量设置,这将导致文件大小更小,但 jpeg 又不支持透明度。
您还可以查看 PhantomJS 2.0.0 是否表现更好,因为它下面的引擎比 PhantomJS 更新了将近三年 1.x。
PhantomJS 之外
你最好的选择是按原样在 PhantomJS 中渲染 png,然后 post 用你最喜欢的库处理它。甚至可能足以打开它并再次保存它。
例如,您可以使用子进程模块调用已安装的程序,或者您可以打开包含此类服务的网页并上传捕获的文件或它的 base64 表示形式。无限可能。
与phantomjs you can choose the file format to use for page.render()
.
我发现我获得的 png 文件大小大约是我获得的 gif 文件大小的三倍。我不知道 png 应该比 gif 更糟糕(就文件大小而言);事实上,我认为 png 应该更好。
不幸的是,我有点需要输出到 png,因为它支持可变的不透明度,但较大的文件大小有点问题。
那么,有什么办法可以控制png文件的大小吗?也许改变编码方案或什么的?我目前正在使用 phantomjs 1.9.8.
PhantomJS 内部
没有,没有办法让png文件变小,但是有办法让它变大(好玩):
- 将文件渲染为 png,
- 将文件加载到 canvas 适当大小,
- 以 png 或任何其他格式获取 canvas 的数据 URI,
- 解码 Base 64 部分并写入文件(这很难做到正确)。
PhantomJS 1.x 有一个错误,会导致文件过大但有效。
只有 jpeg 渲染使您能够指定质量设置,这将导致文件大小更小,但 jpeg 又不支持透明度。
您还可以查看 PhantomJS 2.0.0 是否表现更好,因为它下面的引擎比 PhantomJS 更新了将近三年 1.x。
PhantomJS 之外
你最好的选择是按原样在 PhantomJS 中渲染 png,然后 post 用你最喜欢的库处理它。甚至可能足以打开它并再次保存它。
例如,您可以使用子进程模块调用已安装的程序,或者您可以打开包含此类服务的网页并上传捕获的文件或它的 base64 表示形式。无限可能。