gpt4 book ai didi

javascript - Node Canvas : output PNG file as interlaced/progressive

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:01 25 4
gpt4 key购买 nike

node-canvas 是依赖于 Cairo 的 HTML5 Canvas 库的 Node.js 版本。我的应用程序根据发送到应用程序的数据创建一堆 PNG 文件。

node-canvas 提供了两个函数 toBuffer()toDataURL(),它们将原始 PNG 或 Base64 编码的 PNG 输出到我可以发送到浏览器的字符串。但是,无法在库中添加对隔行扫描的支持。

我想扩展该库的功能并添加对交错 PNG 的支持。我有一个字符串中的原始 PNG 数据,还有图像的像素数组(如果需要)。我不明白 PNG 编码是如何工作的。有人可以指出我需要用来转换我所拥有的数据(非隔行原始 PNG 数据或像素数组)并将其转换为隔行/逐行 PNG 的算法吗?

对于我正在构建的用于绘制复杂方程的图形计算器应用程序来说,这是必要的步骤。与从上到下加载我的应用程序的非隔行 PNG 相比,拥有一个快速显示并随着时间的推移而锐化的模糊图像会很好。

谢谢!

最佳答案

您无法将非隔行扫描的原始 PNG 数据转换为隔行扫描的 PNG 流。隔行扫描与非隔行扫描 PNG 是 PNG 编码的两种不同方式(它们在像素流排序上基本不同,但之后应用过滤器压缩,因此您不能简单地更改最终流以在隔行扫描和非隔行扫描模式之间切换)。生成交错的 PNG 是 PNG 编码器的工作,该编码器用于从原始图像像素写入 PNG 文件(或流)。

尽管如此,我还是建议您不要使用隔行图像;压缩效率会受到影响(尤其是 PNG),而用户体验的优势至少是值得商榷的。 See eg 。如今,隔行 PNG 已很少使用。

关于javascript - Node Canvas : output PNG file as interlaced/progressive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com