Einzelnen Beitrag anzeigen

Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#4

Re: Indy: Bilder übers Web versenden mit IdTCPServer + IdTCP

  Alt 7. Dez 2005, 07:36
So, ich habe inzwischen eine vorläufige Lösung für mein Problem gefunden:
Der Einfachheit halber lasse ich die Bilder der Webcam nur in einem Bitmap speichern und verschicke dieses über das Netz.
Nach einigem Ausprobieren habe ich die komplette Routine (d.h. Client connect->Stream create->Stream read->Stream freeandnil->Client disconnect) vom Timer abarbeiten lassen.

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var
  Filename: string;
  ftmpStream : TFileStream;
begin
  try
    FileName := 'capture.bmp';
    with IdTCPClient2 do
    begin
      if connected then DisConnect;
      Host := edServer.text;
      Port := sePort.Value +1;
      Connect;
    end;
    IdTCPClient2.WriteLn('PIC');
    ftmpStream := TFileStream.Create(ProgDir + 'images\capture.bmp',fmCreate);
    //while IdTCPClient2.connected do
      IdTCPClient2.ReadStream(fTmpStream,-1,true);
    Application.ProcessMessages;
    FreeAndNil(fTmpStream);
    VideoOut.Picture.LoadFromFile(ProgDir + 'images\capture.bmp');
    ShowMessage('Bild geladen!');
    IdTCPClient2.Disconnect;
  except
    on E : Exception do
    ShowMessage(E.Message);
  end;
end;
Der Schalter zum Abrufen des Bildes aktiviert dann nur noch den Timer.

So scheint es zu funktionieren, es wird keine Fehlermeldung mehr angezeigt und die Meldung 'Bild geladen' erscheint regelmäßig.

Jetzt muss ich mich nur(!) noch um die Komprimierung des Bitmaps kümmern und das Ganze dann mal übers Internet testen.
  Mit Zitat antworten Zitat