Вывод изображений

Previous  Top  Next

    
 

 

Вывод изображений

Заголовок HTTP-ответа для HTML-страниц

Мы уже знаем, что для сообщения браузеру, что передаваемый документ является HTML-документом, CGI-программа выводит специальный заголовок, не отображаемый браузером:

WriteLn('Content-Type: text/html');

WriteLn('');

HTTP-заголовок для изображений

Точно таким же образом можно с успехом указать и другой тип данных! Например, для вывода изображения в формате GIF достаточно вывести следующее:

WriteLn('Content-Type: image/gif');

WriteLn('');

Таким образом мы сообщаем браузеру, что далее будет следовать именно изображение...

Передача двоичных данных

Для начала давайте разберемся, как отправить двоичные данные в STDOUTPUT.

 

Я написал две процедуры: первая выводит поток TSTREAM в STDOUTPUT, а вторая выводит двоичный файл в выходной поток:

Code:

// Процедура вывода потока в 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 файл и вывести его!

Code:

procedure WriteGIF(FileName:string);

begin

  WriteLn('Content-type: image/gif');

  WriteLn;

  WriteFile(FileName);

end;