如何最好地实现GIF加载类?

时间:2012-10-26 08:36:10

标签: c++

任务:

我想编写一个C ++头文件,可以加载给定的GIF文件并将其转换为RGBA像素数组。

问题:

我发现尝试阅读规范令人困惑,因为某些块(例如注释)可能出现在文件的任何位置。我也试过阅读其他GIF加载文件的源代码,但我发现这些也非常混乱。我曾尝试为它编写代码,但在它出错之后,我就删除了它并推迟尝试执行它,因为它不是必需的:它现在是。

限制:

我不希望使用外部库(建议提升在这里有点陈词滥调)或预先构建的代码,因为我想了解将要发生的事情,但出于以下几个原因编写我自己的代码:

  1. 如果出现问题,我可以修复代码。
  2. 所以我可以扩展这些功能,并将它们与我现有的其他课程结合起来。
  3. 为避免许可问题:
    • 所以我不会因滥用而被起诉(我既不想付钱也不想被迫让我的代码开源)。
    • 所以我可以捆绑代码或出售程序(这不太可能,但我在这里覆盖基础)没有任何版权/版权问题。
    • 所以我可以安全地将代码提供给其他人,并告诉他们他们不必担心许可证。
    • 因此,我可以将代码提供给缺少GIF加载的库,以便他们可以使用它而无需担心许可证问题。
  4. 保持代码库较小(与其他功能库相比)。
  5. 我知道这是一个非常清单并且似乎没有必要但是当我之前说过堆栈溢出'没有图书馆'时,人们认为它是可选的,他们可以争辩我提交或强迫我的喉咙库。

    问题:

    最好的方法是理解(我发现规格混乱记得)并实现GIF加载,以便将GIF(可能是单个图像或一系列图像)转换为像素数组?在阅读时如何最好地忽略“不必要的”数据(至少在手头的任务方面,忽略评论等)?

    为方便起见,您可以假设像素数组类已经存在。

    明确的代码片段和解释将在这一点上受到赞赏。

1 个答案:

答案 0 :(得分:1)

好的,因为我不能再编辑我的评论....正如Mat建议的那样,尝试理解规范。我推荐网站http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp#comment_extension_block,因为在我看来,它是gif格式结构的一个很好的信息来源,有很多图形和字节代码示例。例如,关于注释的问题:当您在数据流中找到字节对21 FE时,这将引入注释块。以下字节表示ascii字符,在块的末尾,您将找到00