node-canvas:将PNG文件输出为隔行/逐行扫描

时间:2012-07-27 22:30:50

标签: javascript node.js libpng

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

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

我想扩展库的功能并添加对隔行扫描PNG的支持。我有一个字符串中的原始PNG数据,以及图像的像素数组(如果需要)。我不了解PNG编码的工作原理。有人可以指点我需要用来转换我拥有的数据的算法,非隔行原始PNG数据或像素阵列,并将其转换为隔行扫描/渐进式PNG吗?

这是我正在构建图形计算器应用程序的必要步骤,它可以绘制复杂的方程式。随着时间的推移,模​​糊的图像会比非隔行扫描的PNG快速显得更加锐利,这种PNG会从我的应用程序从上到下加载。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

尽管如此,我建议你不要使用隔行扫描图像;压缩效率受到影响(特别是PNG),用户体验的优势至少是值得商榷的。 See eg。今天,隔行扫描的PNG很少使用。