1

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

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

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

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

谢谢!

4

1 回答 1

0

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

不过,我建议您不要使用隔行扫描图像。压缩效率受到影响(特别是 PNG),用户体验的优势至少值得商榷。参见例如。今天,很少使用隔行扫描 PNG。

于 2012-07-30T19:08:39.350 回答