giflib の使い方

マニュアル発見

6行で使い方を説明

ファイル名かファイルディスクリプタ(int fd) を渡して、GIF ファイル画像を開く。

GifFileType *DGifOpenFileName(char *GifFileName) 
GifFileType *DGifOpenFileHandle(int GifFileHandle) 

実際に画像を内部表現データ(in-core allocated structures)に取り込むのは、これ。

int DGifSlurp(GifFileType *GifFile) 

後は、GifFileType 構造体のメンバーを辿って欲しい情報を引き出すだけ。

さて…

使い方は簡単そうだけど、(ファイルでなく)データ配列から読む方法が欲しいので
もちょっと調べないとダメか。

画像合成

何をやりたいのかというと、いわゆるアバター合成みたい処理を自前で実装できないかなーと。
そして、giflib のソースツリーを眺めていて、そのまんまのツールが入っているのを発見。

gifovly.c

 * History:
 * 6 May 94 - Version 1.0 by Eric Raymond.

あの 有名な人(Eric S. Raymond's Home Page)かな。同姓同名だよね。きっと。と思ったら、

    "Gif compiler,\t\tEric S. Raymond\n\
(C) Copyright 1992 Eric S. Raymond, all rights reserved.\n";

ホンモノか。(;゜д゜)

gif_lib.h を読むと、

 * 26 Jun 96 - Version 3.0 by Eric S. Raymond (Full GIF89 support)

なるほど。PNG でかなり貢献してる人ってイメージがあったけど、GIF もそうだったのね。

quantize.c

ついでに、256色への減色処理も発見

うーん。mediun cut 法かな。これ… 工夫の余地がありそう。