Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webcam-Entwicklung: Brauche Eure Hilfe! (https://www.delphipraxis.net/41374-webcam-entwicklung-brauche-eure-hilfe.html)

JPSelter 2. Mär 2005 15:24


Webcam-Entwicklung: Brauche Eure Hilfe!
 
Ich möchte meine Webcam Software soweit bekommen, dass sie alle paar Sekunden ein Bild als JPG auf meinen FTP-Server lädt. Die Webcam komponenten funktionieren soweit, gleich werde ich noch eine Timer-Komponente hinzufügen und dann muss ich noch sehen, wie ich einen JPG auf Festplatte bekomme. Und dann brauche ich wohl Indy...

Gleich zu anfang: Ich habe absolut keine Ahnung von Indy, habe es soeben in mein Delphi7 nachinstalliert und nun schon das erste Problem:
Wo ist mein Indy? In der Komponentenleiste ist weit und breit nichts zu sehen...

JPSelter 2. Mär 2005 17:04

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
OK, was eine Neuinstallation so alles bewirkt... die Indy-Leiste ist wieder da.
Inzwischen habe ich ein kleines FTP-Demo gefunden, das mit Indy läuft. Es sieht sehr einfach aus. Er conncted jetzt korrekt auf meinen Server und läd eine Datei hoch, aber auf dem FTP hat die Datei einen anderen Namen, sieht wie ein Temp-Name aus. In der FTP-Demo wurde komischerweise nichts dazu gesagt und nichts dagegen unternommen. Was mache ich denn da jetzt? Renamen? Wenn ja wie?
Achja, und wofür ist idAntiFreeze da?

moritz 2. Mär 2005 17:10

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
idAntiFreeze bewirkt, dass das Programm auch während eines Down- oder Uploads einer Indy-Komponente die Messages abarbeitet.

Gruß

JPSelter 2. Mär 2005 19:34

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Kann ich über Indy ein Bild direkt auf den FTP laden? Oder muss ich wirklich erst die Bitmap als JPG konvertieren, auf Festplatte als Datei abspeichern und dann die Datei hochladen?

moritz 2. Mär 2005 19:37

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Du kannst den Stream direkt hochladen.

mquadrat 2. Mär 2005 19:38

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Per FTP kannst du nur eine Datei von A nach B senden. Die Datei muss also schon fix und fertig, so wie du sie haben willst auf der Platte liegen.

Der Put Befehl bei der Indy-Komponente ist überladen. Es gibt auch eine Version, bei der du Quell- und Zieldateiname angeben kannst. Setzt du beide gleich, sollte dein Namensproblem verschwunden sein.

Edit: Stimmt, einen Stream kannst du auch direkt schicken, falls du denn einen hast...

JPSelter 2. Mär 2005 19:48

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
OK, dann muss ich erst die JPG-Datei auf Platte speichern. Die Dateinamen auf dem FTP stimmen jetzt auch.

Neues Problem: Mein Programm frisst Speicher. Jedesmal wenn ich in meine TImage Komponente den gegrabbten Frame zwischenspeichere, wird mein Speicher voller und voller. Was muss ich denn hier machen? Irgendwas mit Image1.Free?

moritz 2. Mär 2005 19:51

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Zeig mal den Code, wann was wo passiert.

JPSelter 2. Mär 2005 20:09

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Delphi-Quellcode:
procedure processGrab;
begin
  Form1.tsCap321.CapOrder:=start;
  Form1.tsCap321.CapOrder:=grab; <---------------------- eigentlicher Frame wird gegrabbt
  Form1.tsCap321.CapOrder:=stop;
end;

procedure TForm1.Timer1Timer(Sender: TObject); <---------------- Timer-Intervall liegt bei 10 Sek
var time1,time2: ttimestamp;
begin
  if ready then
  begin
    Label10.caption:='Status: sending ...';
    time1:=DateTimeToTimeStamp(Time);
    processGrab;
    processFTP;
    time2:=DateTimeToTimeStamp(Time);
    processtime:=time2.time-time1.time;
    Label11.caption:='Processtime: '+inttostr(processtime)+' ms';
    Label10.caption:='Status: waiting ...';
  end;
end;

procedure TForm1.tsCap321Bitmap(Sender: TObject; Bitmap: TBitmap;
  msSinceFirstFrame: Cardinal);
var datei: string;
begin
  Image1.Picture.Bitmap:=Bitmap;  <--------------------------- hier scheint der Speicher vollzulaufen
  datei:=Extractfilepath(Application.exename)+'/'+fname;
  with TJpegImage.Create do
  try
    Assign(Image1.Picture.Graphic);
    SaveToFile(datei);
  finally
    Free;
  end;
end;

Elite 2. Mär 2005 20:23

Re: Webcam-Entwicklung: Brauche Eure Hilfe!
 
Zitat:

Zitat von JPSelter
Delphi-Quellcode:
procedure TForm1.tsCap321Bitmap(Sender: TObject; Bitmap: TBitmap;
  msSinceFirstFrame: Cardinal);
var datei: string;
begin[/quote:6d56943b9b]
  Image1.Picture.Bitmap:=Bitmap;  <--------------------------- hier scheint der Speicher vollzulaufen
  datei:=Extractfilepath(Application.exename)+'/'+fname;
  with TJpegImage.Create do
  try
    Assign(Image1.Picture.Graphic);
    SaveToFile(datei);
  finally
    Free;
  end;
end;

Warum gehst du eigentlich solche Umwege. Hat das irgendeinen Hintergrund?
Sonst würde ich mal das vorschlagen:
Delphi-Quellcode:
 with TJpegImage.Create do
  begin
    Assign(Bitmap);
    SaveToFile('C:\Screens\ScreenShot.jpg');
    free;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz