节点画布:将PNG文件输出为交错/逐行扫描

node-canvas: output PNG file as interlaced/progressive

本文关键字:逐行扫描 输出 文件 PNG 节点      更新时间:2024-04-14

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

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

我想扩展库的功能,并添加对交错PNG的支持。我有一个字符串中的原始PNG数据,还有一个图像的像素数组(如果需要的话)。我不了解PNG编码是如何工作的。有人能给我指一下我需要使用的算法来转换我的数据吗,无论是非交错的原始PNG数据还是像素阵列,并将其转换为交错/逐行PNG?

这是我正在构建的绘制复杂方程的绘图计算器应用程序的必要步骤。如果有一个模糊的图像能快速出现,并随着时间的推移而锐化,这将比我的应用程序从上到下加载的非交错PNG要好。

谢谢!

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

尽管如此,我还是建议您不要使用交错图像;压缩效率受到影响(特别是PNG),并且对于用户体验的优势至少是有争议的。现在,交错的PNG很少被使用。