中田さん。
いつも適確なアドバイスありがとうございます。
setmode( fileno(stdout), O_BINARY );
をfwriteの前に挿入しましたところ、無事表示できました!
ちょっと感動… (~O~)
ありがとうございました。
naomi さん、
Windows では標準入出力はデフォルトでテキストモードですから、もちろんバイナリモードにしないといけません。
通常 C では setmode を使うと思います。
"\015\012" を出すのであれば、最初の printf の前に標準出力をバイナリにする必要があるでしょう。
"\012" であれば fwrite の前でいいわけですが。
JPEG画像の元となるバイナリコードを読み込ませて
画像表示をしたいのですが、うまく動作せずに困っております。
HTMLにおいては
<IMG SRC="test.cgi" BORDER="0" NAME="test" WIDTH="320" HEIGHT="240">
というように記載し、cgiファイルを呼び出すようにしております。
以下にcgiファイル内容を示します。
DOSウィンドウではバイナリデータは出力されている様子が
確認できるのですが、ブラウザページでは画像表示されません。
こういった内容に関して少し調べてみたのですが
Perlではbinmodeを使ってバイナリに切り替えを行ったりしていますが
C言語で処理を行う場合、これに対応するようなコマンドが
何か必要になってくるのでしょうか?
もし、必要となる場合、どのようにすればよいのでしょうか?
また、私は98SEの環境でTESTしているのですが
98SEでは他にも特別な対応が必要なのでしょうか?
長くなりましたが、よろしくお願い致します。
#include <stdio.h>
#include <string.h>
int main()
{
char buf[32];
static const
unsigned char img_data[] =
{
0xff, 0xd8, 0xff, 0xe1, 0x22, 0x48, 0x45,
0x78, 0x69, 0x66, 0x00, 0x00, 0x49, 0x49,
0x2a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0b,
...(バイナリデータ省略)
};
printf("HTTP/1.0 200 OK\015\012");
printf("Content-Type: image/jpeg\015\012");
sprintf( buf, "Content-Length: %d\015\012", sizeof(img_data) );
printf( buf );
printf("\015\012");
fwrite(img_data, sizeof(img_data), 1, stdout);
return 0;
}