Вывод изображений
Вывод изображений
Вывод изображений
Заголовок HTTP-ответа для HTML-страниц
Мы уже знаем, что для сообщения браузеру, что передаваемый документ является HTML-документом, CGI-программа выводит специальный заголовок, не отображаемый браузером:
WriteLn('Content-Type: text/html');
WriteLn('');
HTTP-заголовок для изображений
Точно таким же образом можно с успехом указать и другой тип данных! Например, для вывода изображения в формате GIF достаточно вывести следующее:
WriteLn('Content-Type: image/gif');
WriteLn('');
Таким образом мы сообщаем браузеру, что далее будет следовать именно изображение...
Передача двоичных данных
Для начала давайте разберемся, как отправить двоичные данные в STDOUTPUT.
Я написал две процедуры: первая выводит поток TSTREAM в STDOUTPUT, а вторая выводит двоичный файл в выходной поток:
// Процедура вывода потока в STDOUTPUT.
// Попробуйте самостоятельно переделать ее для Kylix...
procedure WriteStream(stream:TStream);
var
OutStream:THandleStream;
begin
Flush(output); // для передачи заголовка мы используем обычный WRITELN...
// здесь используется код из программы
// DCOUNTER for Delphi 3 by Dave Wedwick (dwedwick@bigfoot.com)
OutputStream:=THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDLE));
Stream.SaveToStream(OutputStream);
OutputStream.Free;
end;
// Процедура для передачи двоичного файла
procedure WriteFile(FileName:string);
var
s:TFileStream;
begin
s:=TFileStream.Create(FileName,fmOpenRead);
WriteStream(s);
end;
Передача GIF файлов
Теперь нам осталось только создать (или взять готовый) GIF файл и вывести его! procedure WriteGIF(FileName:string);
begin
WriteLn('Content-type: image/gif');
WriteLn;
WriteFile(FileName);
end;