首页 > 解决方案 > 在C中读取隔行扫描PNG的字节

问题描述

我一直在尝试用 C 语言制作我自己的 PNG 阅读器,并且我已经达到了它可以正常工作的地步,但我想尝试扩大它的支持。我注意到虽然不常见,但隔行扫描的 png 确实存在。现在,我希望我的读者的目标只是返回一个 rgba 值数组,这些值对应于从左上到右下顺序的每个像素。我不会创建或显示任何 png。

根据我在维基百科上看到的Adam7 隔行扫描(png 使用的类型),我最需要通过根据 Adam7 组织最终数组来添加对它的支持。但是,当我查看 libpng 的隔行和渐进显示部分(我正在使用的资源之一)时,它指出:

请注意,尽管我已经按照 8 × 8 块的形式描述了该方法,但任何给定通道的像素都存储为完整的行,而不是块组。例如,第五遍由图像整个第三行中的每隔一个像素组成,然后是第七行中的每隔一个像素,依此类推。

这使得隔行扫描看起来像是显示它的程序的肉,而不是使用 Adam7 算法存储的信息本身。

我现在的问题是,如果我不显示 png,隔行扫描重要吗?如果是这样,有人可以提供一个如何解开信息的例子吗?因为这方面仍然让我感到困惑。

标签: cbinarypng

解决方案


推荐阅读