Делаю это через язык Си, разумеется программа работает как CGI-сценарий. Компилятор - MS Visual C++;
Раз мы используем CGI, то нам достаточно открыть поток для файла с картинкой (в режиме binary) и перенаправить его на stdout (стандартный поток вывода в языке Си, для тех кто не в теме) тоже в режиме binary. Что ж задача ясна, осталось черкнуть код. Вот он:
#include <stdio.h> //Прототипчик long filesize(FILE *f);
void main() { int str; // Открываем потоки в режиме бинарного чтения и записи (обязательно!). FILE *f = fopen("left.png", "rb"); FILE *st = fdopen(fileno(stdout), "wb"); //Обычно, stdout и так нам доступен... Это крик отчаяния, так как не знаю в чем проблема // Выводим необходимые заголовки в браузер printf("Pragma: no-cache\n"); printf("Content-type: image/png\n"); printf( "Content-length: %d\n", filesize(f)); printf("\n");
int c; while ((c = getc(f)) != EOF) { //Копируем потоки, oldschool [] putc(c, st); } } long filesize(FILE *f) { long pos, size; pos = ftell(f); fseek(f, 0, 2); size = ftell(f); fseek(f, pos, 0); return size; }
Теперь о грустном.... Не все картинки выводятся и я не знаю в чем проблема. Уточню...
Берем, например вот _http://rghost.ru/46434752 этот фавикон
А если воткнуть туда другое изображение(большего размера, как мне кажется), то получаем сообщение, что картинка повреждена.... В общем прошу помощи... Искал инфу в литературе - нашел нечто подобное у Котерова (PHP5 в подлиннике), там был исходник, но он не работает... Точнее работает точно так же как и мой(выводит только этот фавикон), только юзает буфер на 4000 байт, что есть плохо... Если кому надо, то могу выложить листинг.. Причем в книге написано, что они не приводят полный листинг из-за "обилия технических подробностей"... Тоже мне отговорка, как будто я лох какой-то....
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
k0d
Хочу вывести картинку как поток битов в браузер.
Делаю это через язык Си, разумеется программа работает как CGI-сценарий. Компилятор - MS Visual C++;
Раз мы используем CGI, то нам достаточно открыть поток для файла с картинкой (в режиме binary) и перенаправить его на stdout (стандартный поток вывода в языке Си, для тех кто не в теме) тоже в режиме binary. Что ж задача ясна, осталось черкнуть код. Вот он:
Теперь о грустном.... Не все картинки выводятся и я не знаю в чем проблема. Уточню...
Берем, например вот _http://rghost.ru/46434752 этот фавикон
Выводим http://rghost.ru/46434807 - все норм
А если воткнуть туда другое изображение(большего размера, как мне кажется), то получаем сообщение, что картинка повреждена.... В общем прошу помощи... Искал инфу в литературе - нашел нечто подобное у Котерова (PHP5 в подлиннике), там был исходник, но он не работает... Точнее работает точно так же как и мой(выводит только этот фавикон), только юзает буфер на 4000 байт, что есть плохо... Если кому надо, то могу выложить листинг.. Причем в книге написано, что они не приводят полный листинг из-за "обилия технических подробностей"... Тоже мне отговорка, как будто я лох какой-то....
Edited by k0dLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.