<分区>
任务:
我想编写一个 C++ 头文件,它可以加载给定的 GIF 文件并将其转换为 RGBA 像素数组。
问题:
我发现试图阅读规范时会感到困惑,因为某些 block (例如注释)可能出现在文件的任何位置。我还尝试阅读其他 GIF 加载文件的源代码,但我发现这些文件也非常困惑。我曾尝试为它编写代码,但在出现严重错误后,我将其删除并推迟了尝试,因为它不是必需的:现在是。
限制:
我不想使用外部库(建议 boost 在这里有点陈词滥调)或预构建代码,因为我想了解正在发生的事情,但主要出于以下几个原因编写我自己的代码:
- 这样我就可以在出错时修复代码。
- 这样我就可以扩展功能并将它们与我已有的其他类合并。
- 为避免许可问题:
- 因此我不会因滥用而被起诉(我既不想付费也不想被迫将我的代码开源)。
- 这样我就可以将代码与程序捆绑在一起或出售(这不太可能,但我在这里涵盖了基础)而没有任何版权/copyleft 问题。
- 这样我就可以安全地将代码提供给其他人,并且能够告诉他们他们不必担心许可证问题。
- 因此我可以将代码提供给没有加载 GIF 的库,这样他们就可以使用它而不必担心许可问题。
- 保持代码库较小(与其他功能库相比)。
我知道这是一个很长的列表,似乎没有必要,但是当我之前在堆栈溢出时说“没有库”时,人们认为这是可选的,他们可以说服我提交或强制我接受库。
问题:
理解(我发现规范令人困惑)和实现 GIF 加载以便将 GIF(可能是单个图像或一系列图像)转换为像素数组的最佳方法是什么?阅读时如何最好地忽略“不必要的”数据(至少就手头的任务而言,因此忽略评论等)?
为方便起见,您可以假设像素数组类已经存在。
在这方面,我们将不胜感激带有解释的清晰代码片段。