cucu81
2001/12/02, 02:33 AM
いちおうやってみましたが、うまく動いているようですが…
軽く以下のソースをタメしてみました。
#include <stdio.h>
#include <stdlib.h>
// (C) Kokucho81 by CuCu81.jp
char gif3[] = {
0x47,0x49,0x46, // 固定値 Ascii "GIF"
0x38,0x39,0x61, // 固定値 Ascii "89a"
0x0C,0x00, // 画像の幅
0x12,0x00, // 画像の高さ
0xB3, // 1 011 0 011
/*
1 Global Color Table
の有無 1:有り 0:なし
011 Color Resolution
この(値+1)が画像1ドットを表すのに必要なビット数
0 Global Color Table
がソートされているかどうか 1:いる 0:いない
011 Size of Global Color Table
(この値+1)=nとして、2のn乗がGlobal Color Tableの数
*/
0x00, // 背景色のインデックス
0x00, // ピクセルの縦横比。
// この値(1-255)をnとし、(n+15)/64 が実際の比率。
//情報がない場合は、0
// 以下はGlobal Color Tableが1の場合に存在する。
// 1つの色情報につきRGBの3バイトずつ、色情報がSize Of Global Color Table個ならぶ
0x8A,0xB4,0xB4,0xAB,0xD2,0xD2,0xFA,0xFB,0xFB,
0x4C,0x64,0x64,0x99,0xCC,0xCC,0x75,0x9B,0x9B,
0xC4,0xD8,0xD8,0x65,0x84,0x84,0x90,0xC0,0xC0,
0xD9,0xE6,0xE6,0x97,0xC8,0xC8,0x7F,0xA9,0xA9,
0xE7,0xEF,0xEF,0x70,0x93,0x93,0x73,0x85,0x85,
0xAB,0xBB,0xBB,
0x21, // Extention Introducer 固定値 拡張ブロックであることを示す
0xF9, // Graphic Control Extention 固定値 であることを示す。
0x04, // ブロックサイズ 固定値
0x00, // 0000000 0 最後の1ビットは透過処理を行うかどうか、行う:1 行わない:0
0x00,0x00, // 表示する時の遅延時間 0は遅延なし
0x00, // 透過処理する色のインデックス。
0x00, // ブロックの終了
0x2C, // Image Block 固定値
0x00,0x00, // 画像全体に対するイメージブロックの左端相対位置
0x00,0x00, // 画像全体に対するイメージブロックの上端相対位置
0x0C,0x00, // イメージブロックの横幅 0x1234の場合は0x34 0x12となる
0x12,0x00, // イメージブロックの縦幅 0x1234の場合は0x34 0x12となる
0x00, // 0 0 0 00 000
/*
0 Local Color Tableが存在する場合は1、存在しない場合は0
0 インタレースする場合は1、しない場合は0
0 Local Color Tableがソートされている場合は1、ソートされていない場合は0
00 未使用
000 Size of Local Color Table=n の 2の(n+1)乗
*/
// 1つの色情報につきRGBの3バイトずつ、色情報がSize Of Global Color Table個ならぶ
0x04,0x61,0x90,0xC8,0x49,0xAB,0xAD,0x21,0xB1,
0x14,0x90,0xA2,0x81,0x20,0x8A,0x00,0xF0,0x49,
0xDC,0xF2,0x88,0x4F,0x81,0x50,0x40,0xD1,0x88,
0xCE,0x61,0x4A,0x4A,0xA9,0x08,0xC6,0x60,0x9F,
0x12,0x83,0x88,0x51,0x03,0x54,0x0C,0x0C,0x51,
0xE2,0x47,0xC9,
0x25, // LZWコードの最小ビット数
0x44, // 次に続くイメージデータのバイト数を表す値。
// 以下イメージデータ 上のバイト数 LZWアルゴリズムにより圧縮されている
0x87,0x05,0x90,0xA0,0x40,0x2C,0x44,0x83,
0xC6,0x8B,0x10,0x08,0x28,0xAA,0xBC,0xEC,
0x2B,0xC4,0xE8,0x08,0x1B,0x03,0x17,0x4A,
0x69,0x00,0x1C,0xA2,0x27,0x44,0xE1,0xDD,
0x68,0x14,0x16,0x5B,0x82,0x55,0x76,0x07,
0xE4,0x71,0x08,0x81,0x1E,0x17,0x84,0x04,
0x11,
0x00, // ブロックの並びの終わりを表す 固定値
0x3B // GIFファイルの終わりを表す 固定値
};
int main(void)
{
printf("Content-Type: image/gif\n\n");
fwrite(gif3, sizeof(gif3), 1, stdout);
return 0;
}
今回は、コンパイル場所は、(1)トクトクと(2)自分の有料の鯖を
タメしてみましたが、XREAがRedhat7.1でこれらもRedhatなので
うまく動きます。
パーミッション何でも良いと思いますが、100にしてあります。
http://cucu81.s2.xrea.com/x/a.cgi
です。
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.