![]() |
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... |
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? |
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ß |
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?
|
Re: Webcam-Entwicklung: Brauche Eure Hilfe!
Du kannst den Stream direkt hochladen.
|
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... |
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? |
Re: Webcam-Entwicklung: Brauche Eure Hilfe!
Zeig mal den Code, wann was wo passiert.
|
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; |
Re: Webcam-Entwicklung: Brauche Eure Hilfe!
Zitat:
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 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz