0

タスク:

特定のGIFファイルをロードしてRGBAピクセル配列に変換できるC++ヘッダーファイルを作成したいと思います。

問題点:

特定のブロック(コメントなど)がファイルのどこにでも発生する可能性があるため、仕様を読み込もうとすると混乱することがわかりました。他のGIF読み込みファイルのソースコードも読んでみましたが、これらも非常に混乱していることがわかりました。私はそれのためにコードを書こうとしました、しかしそれがひどく間違っていた後、私はそれを削除し、それが必要でなかったのでそれをすることを延期しました:それは今です。

制限:

何が起こっているのかを理解したいので、外部ライブラリ(ここではブーストを提案するのはちょっと決まり文句です)やビルド済みのコードを使用したくありませんが、特にいくつかの理由で独自のコードを記述します:

  1. だから私はそれがうまくいかない場合にコードを修復することができます。
  2. そのため、機能を拡張して、既存の他のクラスに組み込むことができます。
  3. ライセンスの問題を回避するには:
    • だから私は誤用で訴えられることはありません(私は自分のコードをオープンソースにするためにお金を払ったり、強制されたりしたくありません)。
    • したがって、著作権/コピーレフトの問題なしに、コードをバンドルしたり、プログラムを販売したりすることができます(これはありそうにありませんが、ここでベースをカバーしています)。
    • そのため、他の人に安全にコードを渡して、ライセンスについて心配する必要がないことを他の人に伝えることができます。
    • そのため、GIFがロードされていないライブラリにコードを提供して、ライセンスの問題を心配せずにコードを使用できるようにすることができます。
  4. コードベースを小さく保つため(他の機能のライブラリと比較して)。

私はそれがかなりのリストであり、不必要に思えることを知っていますが、以前にスタックオーバーフローで「ライブラリはありません」と言ったとき、人々は私に提出を主張したり、ライブラリを私の喉に押し付けたりすることができるのはオプションだと思います。

質問:

GIF(単一の画像または一連の画像の可能性があります)をピクセルの配列に変換するために、理解し(仕様がわかりにくいことを覚えています)、GIFの読み込みを実装するための最良の方法は何ですか?そして、読むときに「不要な」データを無視するのに最適な方法はありますか(少なくとも目前のタスクに関しては、コメントなどを無視します)。

便宜上、ピクセル配列クラスがすでに存在すると想定できます。

説明付きの明確なコードスニペットは、これでいただければ幸いです。

4

1 に答える 1

1

Ok, since i can't edit my comment anymore.... As Mat suggested, try to understand the spec. I recommend the site http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp#comment_extension_block since in my opinion it is a good source of information about the structure of the gif format, with much graphics and byte-code-examples. For example your question about the comments: When you find an byte-pair 21 FE in your datastream this is introducing a comment block. The following bytes indicate the ascii characters and at the end of the block you will find a 00.

于 2012-10-26T08:54:14.503 に答える