These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
|||||||||||||||||||||||||||||||||||||||||||
http://diary.awm.jp/~yoya/data/2008/09/16/gif_dump.c? のプログラムなのですが、 画像のヘッダ情報はうまくとれるのですが 肝心の画像の先頭ピクセルにうまくアクセスできていない様に思います。といった質問を見つけました。
printf("RasterBits:\n"); for (y = 0 ; y < desc.Height ; y++) { printf(" y=%d:", y + desc.Top); for(x = 0 ; x < desc.Width ; x++) { printf(" %02x", image.RasterBits[ii] & 0xff); ii++; } printf("\n"); }でも、これ 1 byte なのに? RGB は 3bytes じゃないの?
+--+--+ |赤|緑| +--+--+ |青|黒| +-----+
255,0,0, 0,255,0, 0,0,255, 0,0,0 <-- ラスタデータ ------------->
255,0,0, 0,255,0, 0,0,255, 0,0,0, 0, 1, 2, 3 <-- カラーマップ --------------> <ラスタデータ->giflib が取り出せるのは、このカラーマップと色インデックス値の配列です。
ColorMapObject *ColorMap;で表現されているのが、カラーマップ (SColorMap と ImageDesc.ColorMap があるのは後述)で、
printf("RasterBits:\n"); for (y = 0 ; y < desc.Height ; y++) { printf(" y=%d:", y + desc.Top); for(x = 0 ; x < desc.Width ; x++) { printf(" %02x", image.RasterBits[ii] & 0xff); ii++; } printf("\n"); }で表示しているのが、パレット形式のラスタデータ(カラーマップへのインデックスの配列)です。
for (j = 0, BufferP = Buffer; j < ScreenWidth; j++) { ColorMapEntry = &ColorMap->Colors[GifRow[j]]; *BufferP++ = ColorMapEntry->Red; *BufferP++ = ColorMapEntry->Green; *BufferP++ = ColorMapEntry->Blue; }
このメールアドレスはすでに登録されていますとか出てきて、次進めません。