phantomjs 输出文件大小:png v gif
Posted
技术标签:
【中文标题】phantomjs 输出文件大小:png v gif【英文标题】:phantomjs output file size: png v gif 【发布时间】:2016-01-06 04:14:03 【问题描述】:使用phantomjs,您可以选择用于page.render()
的文件格式。
我发现我为 png 获得的文件大小大约是我为 gif 获得的文件大小的三倍。我不知道 png 应该比 gif 更差(就文件大小而言);事实上,我认为 png 是为了更好。
不幸的是,由于它支持可变不透明度,我有点需要输出到 png,但较大的文件大小有点问题。
那么,有什么方法可以控制 png 的文件大小吗?也许改变编码方案或什么?我目前正在使用 phantomjs 1.9.8。
【问题讨论】:
【参考方案1】:PhantomJS 内部
不,没有办法让 png 文件变小,但是有办法让它变大(只是为了好玩):
-
将文件渲染为 png,
将文件加载到适当大小的画布上,
以 png 或任何其他格式获取画布的 Data-URI,
解码 Base 64 部分并写入文件(这很难做到正确)。
PhantomJS 1.x 有一个错误,导致文件过大但有效。
只有 jpeg 渲染可以让您指定质量设置,这将导致更小的文件大小,但 jpeg 不支持透明度。
您还可以查看 PhantomJS 2.0.0 是否表现更好,因为它下面的引擎比 PhantomJS 1.x 更新了近三年。
在 PhantomJS 之外
最好的办法是在 PhantomJS 中按原样渲染 png,然后用你最喜欢的库对其进行后期处理。甚至打开它并再次保存就足够了。
例如,您可以使用子进程模块调用已安装的程序,或者您可以打开包含此类服务的网页并上传捕获的文件或它的 base64 表示。无限可能。
【讨论】:
我尝试了 PhantomJS 2.0.0,但 png 的大小更大......所以我坚持使用 1.9.8!看起来后处理是唯一的选择。我现在只是通过 ImageMagick 运行输出(基本上将 png 转换为 png,但具有控制压缩的能力)。与标准 phantomjs png 输出(例如 95KB 到 78KB)相比,这会稍微减小大小。 几个小时前我投了反对票,因为当我阅读“只是为了好玩”时,我认为答案没有帮助。由于我正在寻找一种使文件更小的方法,因此很难让我相信这很有趣。但是,我收回了投票。恐怕我不应该这么刻薄。也许这会让你不舒服。希望你不要介意。 @AwQiruiGuo 这篇文章中的确切问题是“我可以控制 png 的文件大小”,因此增加文件大小也是一种控制它的方法(有点像)。这只是在 PhantomJS 中使用错误的一种有趣(至少对我而言)方式。我希望我更清楚地表明,仅使用 PhantomJS 的功能是不可能减小文件大小的。唯一的方法是使用外部工具或网络服务对其进行后期处理。 @ArtjomB。根据作者的上下文`我得到的 png 比我得到的 gif 高大约三倍`我确信他想减小大小而不仅仅是control
它。但是感谢您指出这与 phantomjs 无关。这将节省我寻找不存在的解决方案的时间。所以我终于给你投票了:)以上是关于phantomjs 输出文件大小:png v gif的主要内容,如果未能解决你的问题,请参考以下文章