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 Bild (JPG) per FTP-Uploaden (https://www.delphipraxis.net/97435-webcam-bild-jpg-per-ftp-uploaden.html)

internetnavigator 10. Aug 2007 12:49


Webcam Bild (JPG) per FTP-Uploaden
 
Hallo allezusammen!

Ich habe mir den Script von Ultimator mal als Basis Programm "genommen":

Delphi-Quellcode:
//Zuerst brauchst du folgende Konstanten
const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

implementation

{$R *.dfm}

//Dann brauchst du noch das hier
function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';

procedure TForm1.LaberLaber; //halt irgendne Prozedur, ich habs im Formcreate, damit ich gleich was seh ^^
var handle:THandle;
begin
  handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 320, 240, Panel1.Handle, 1); //Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-)
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle, wm_cap_set_preview, 1, 0);
end;
und nun bekomme ich das aktuelle Bild in Panel1 angezeigt, nur wie kann ich jetzt das ganze als JPG speichern und dann per FTP uploaden? (ich denke mal mit idFTP (habe ich schonmal getestet, geht gut))

Das ganze sollte dann auch automatisch alle 2-5 sec geschehen (möchte ich per Timer machen).

Nun wie bekomme ich das hin?

Wenn jemand schon ein SourceCode für so etwas hat und ihn mir zum "spielen" gibt, wäre ich sehr dankbar!

Gruß i-n

1234588 10. Aug 2007 13:46

Re: Webcam Bild (JPG) per FTP-Uploaden
 
klingt ganz danach, als ob du andere ausspionieren moechtest.

chaosben 10. Aug 2007 13:57

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Naja, eigentlich ist die Sache recht einfach:
- Als erstes brauchst du das Bild vom Panel in eine "Bild-Variable" (z.B. ein TBitmap). Das erreichst du zum Beispiel mit der Hier im Forum suchenPrintWindow-Funktion.
- Dann konvertierst du das Bitmap in ein JPEG. Das geht imho via
Delphi-Quellcode:
JpegImage.Assign(Bitmap)
.
- Danach speicherst du das Bild als Datei.
- Und dann lädst du sie hoch. (wie du es scheinbar schon gemacht hast)

Fertig. Noch Fragen? :D

Torpedo 10. Aug 2007 14:02

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Zitat:

Zitat von 1234588
klingt ganz danach, als ob du andere ausspionieren moechtest.

Wieso? Webcams werden doch oft dafür benutzt alle X Sekunden ein Bild zu schießen und es dann im Internet auf einer Webseite zu veröffentlichen.

1234588 10. Aug 2007 14:11

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Zitat:

Zitat von Torpedo
Zitat:

Zitat von 1234588
klingt ganz danach, als ob du andere ausspionieren moechtest.

Wieso? Webcams werden doch oft dafür benutzt alle X Sekunden ein Bild zu schießen und es dann im Internet auf einer Webseite zu veröffentlichen.

okay, kann auch sein. sry =)


chaosben, funktioniert das auch mit video-overlays?

internetnavigator 10. Aug 2007 14:29

Re: Webcam Bild (JPG) per FTP-Uploaden
 
ich habe einen PC mit einer Webcam, die zur Straße guckt im Keller stehen, und ich würde mal gern versuchen das jpg von der schule über einen Server zu erreichen (fast live versteht sich).

Ich vestehe nicht ganz, wie ich das Bild zum jpg bringe. So?:
Delphi-Quellcode:
var
bild : TBitmap; //? oder String?

begin
bild := handle
JpegImage.Assign(bild);

end;
Gruß i-n

1234588 10. Aug 2007 14:37

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Delphi-Quellcode:
uses jpeg;

..

var
  j: tjpegimage;
begin
  j := tjpegimage.create;
  j.assign(deine TBitmap quelle);
natuerlich musst du das dann noch abspeichern (j.savetofile()) und das j objekt wieder freigeben (j.free)

inherited 10. Aug 2007 15:00

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Morgen.
Eine möglichkeit das Bild von dem Panel in ein Bitmap zu bekommen ist über die Zwischenablage, wobei VHandle dein Video-Handle ist.

Delphi-Quellcode:
  SendMessage(Vhandle, WM_CAP_EDIT_COPY, 1, 0 );
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);

internetnavigator 10. Aug 2007 15:17

Re: Webcam Bild (JPG) per FTP-Uploaden
 
gut!

ich habe noch
Delphi-Quellcode:
Clipbrd
in uses geschrieben, dann gings, bis auf, dass nur ein schwarzes Bild gespeichert wird, da Image1 kein Bild bekommt.

Delphi-Quellcode:
  SendMessage(handle, WM_CAP_EDIT_COPY, 1, 0 ); //Läd Bild in das Clipboard, oder?
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); // Soll das nicht das Bild in Image1 laden?
Gruß i-n

internetnavigator 10. Aug 2007 15:22

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Moment, ich habe BD2006 einmal neugestartet, jetzt geht's! (also noch ^^)

Vielen Danke für eure Hilfe!
Ich werde mich mal jetzt mit dem Upload beschäftigen, wenn ich etwas nicht versteh, melde ich mich...

Gruß i-n

internetnavigator 10. Aug 2007 15:30

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Problem:

Es werden nur 9 Bilder gemacht, danach hört "es" einfach auf. Woran kann das liegen?
Muss ich jpegimage clearn?

internetnavigator 10. Aug 2007 16:42

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Bitte irgend jemand muss das doch wissen! Bitte, ihr habt mir schon soviel geholfen: Ihr wisst es, ich nicht :(

-i-n-

chaosben 11. Aug 2007 07:46

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Setz einfach mal einen Breakpoint(F5) in der Prozedur und lass die Anwendung laufen. Dann siehst du was passiert.

Wird die Prozedur vielleicht nicht mehr aufgerufen? Oder stimmt ein Bedingung nicht?

internetnavigator 11. Aug 2007 09:52

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Kann es auch daran liegen, dass Timer1, und somit das capturen und saven der bilder, zu schnell hintereinander aufgerufen werden? (3sec delay).

edit: wäre es nicht besser, das ganze so aufubauen:?

Delphi-Quellcode:

var
x:integer = 0;
y:integer = 0;
begin
while x=y do begin
... //x,y sind immer 0, bis ich die Prozedur beenden will.
end;
end;
Was ich damit erreichen möchte ist klar: Es soll immer erst alles abgearbeitet werden, und nicht im Sekundentakt aufgerufen werden, da ich mir nicht sicher bin, ob Timer1 nicht schon neuaufruft, bevor die Schritte abgearbeitet sind. Ist das wirklich so?

Gruß i-n

ADD(11:23): Ich habe es mit der nie endenen While-Schleife versucht, Ergebnis: "Nicht genügend Speicher" wird mir "vorgeworfen" (Hab 1gb Ram) Woran liegts?

Hätte vielleicht jemand Lust und Zeit mir das per ICQ/MSN zu erklähren?

internetnavigator 11. Aug 2007 11:25

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Ich denke, ich weiss woran es liegen könnte:

Delphi-Quellcode:
begin

handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640, 480, Panel1.Handle, 1);
SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0); //verbinden: das wir bei jedem Aufruf vom Timer (1sec) mit aufgerufen
Delphi-Quellcode:

  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0); //setRate
  sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);   //setOvl
  SendMessage(handle, wm_cap_set_preview, 1, 0); //prev
  SendMessage(handle, WM_CAP_EDIT_COPY, 1, 0 );//save Bitmap -> Clipboard
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); //Clipboard (Bitmap) -> Image1
//...
end;
Es könnte doch sein, wenn er sich zuoft Connected hat, dass er dann damit aufhört und dann auch den Rest (Bild in Image1 zeigen) nicht mehr ausführt.
Meine Frage: Wie kann ich das "Rote" nur einmal ausführen?

inherited 11. Aug 2007 13:23

Re: Webcam Bild (JPG) per FTP-Uploaden
 
:shock:
Du initialisierst die Kamera jedesmal neu...
Ruf die Prozedur dafür nur einmal auf, in den Speicher-Timer kommt dann nur das für das Speichern.
Und das Konstrukt mit x=y ist sinnlos! was du aber machen solltest ist, am Anfang des Timers diesen .enabled auf false und am ende wieder auf true zu setzen.

internetnavigator 11. Aug 2007 14:36

Re: Webcam Bild (JPG) per FTP-Uploaden
 
jep so habe ich das auchschon ausprobiert: In Form1.Create das Connecten zu Cam; und dann das saven in Timer, aber wenn ich das so versuche, dann hat er immer Probleme mir der var handle:THandle.

DGL-luke 11. Aug 2007 14:40

Re: Webcam Bild (JPG) per FTP-Uploaden
 
das handle musst du (form-)global deklarieren.

internetnavigator 11. Aug 2007 15:39

Re: Webcam Bild (JPG) per FTP-Uploaden
 
ich habe es hier deklariert:
Delphi-Quellcode:
//...
public
    { Public declarations }
  end;

var
  Form1: TForm1;
  handle:Thandle;

const
//...
Aber es kommt immer wieder dieser Fehler:
Zitat:

[Pascal Error] cap_u.pas(70): E2129 Cannot assign to a read-only property
zur weiteren Erklährung: in Line 70 steht:
Delphi-Quellcode:
handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,0, 640, 480, Panel1.Handle, 1);

DGL-luke 11. Aug 2007 15:48

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Jop, du kommst hier in konflikt mit TForm1.Handle. Nenn deine Variable lieber "CamHandle".

internetnavigator 11. Aug 2007 16:30

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Danke!
Jetzt geht alles soweit gut, bis dann der Moment kommt: "Für diesen Befehl ist nicht genügend Speicher verfügbar!" Was ist das jetzt? Clipboard voll?

inherited 11. Aug 2007 20:54

Re: Webcam Bild (JPG) per FTP-Uploaden
 
zeig mal deinen ganzen code soweit bitte.

internetnavigator 11. Aug 2007 23:38

Re: Webcam Bild (JPG) per FTP-Uploaden
 
nun gut hier mein code:

Delphi-Quellcode:
//(...)
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg, clipbrd, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Timer1: TTimer;
    Image1: TImage;
    IdFTP1: TIdFTP;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Camhandle:Thandle;

const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

implementation

{$R *.dfm}


function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';

procedure TForm1.Button1Click(Sender: TObject); //exit Button
begin
(* idFTP1.Disconnect;
idFTP1.Quit; Deaktiviert, da ich es momentan nicht brauche *)
Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Camhandle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640, 480, Panel1.Handle, 1);                            //wird einmalig aufgerufen
  SendMessage(Camhandle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(Camhandle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  Timer1.Enabled := TRUE; // Timer einschalten, für Bilder "machen"
end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

j: tjpegimage;
//Size: DWORD; wird Momentan nich gebraucht
//Result : String; wird Momentan nich gebraucht


begin

  sendMessage(camhandle, WM_CAP_SET_OVERLAY, 1, 0); //|
  SendMessage(camhandle, wm_cap_set_preview, 1, 0); //|-> Init and make clipboard = bild
  SendMessage(camhandle, WM_CAP_EDIT_COPY, 1, 0 );  //\
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);//|

 

j := tjpegimage.create;
j.assign(Image1.Picture.Bitmap);              //save
j.SaveToFile('cap.jpg');

(*
...
Hier steht alles zum FTP-Upload, ist aber momentan noch deaktiviert
...
*)
end;
end.
Ich hoffe Ihr/Du findet/findest den Fehler :bounce1:

inherited 11. Aug 2007 23:59

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Was macht das SendMessage Set Overlay/Set preview im Timer?

internetnavigator 12. Aug 2007 00:46

Re: Webcam Bild (JPG) per FTP-Uploaden
 
hmm ich weiss auchnicht wie sich das dorthin kopieren konnte :angel: ...naja ich wusste es nicht besser :angel2:
...habe es jetzt verschoben, aber Fehler kommt immernoch :(

Zitat:

First chance exception at $7C812A5B. Exception class EOutOfResources with message 'Für diesen Befehl ist nicht genügend Speicher verfügbar.
'. Process cap_p.exe (1992)
Kann es auch an dem Clipboard liegen? Oder überschreibt sich das selbst, so dass man es nicht clearn muss?

gn8 soweit i-n

internetnavigator 13. Aug 2007 16:12

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Was kann das sein, wovon zu wenig da ist? - Bitte ich möchte dieses Programm wendlich fertig bekommen :)

Selbst Kleinigkeiten helfen! Wie zum Bleistift handle => Camhandle
Bitte!

mfg i-n

inherited 14. Aug 2007 11:28

Re: Webcam Bild (JPG) per FTP-Uploaden
 
zeig jetzt npochmal deine timerfunktion und sag uns, in welcher zeile der Fehler auftritt

internetnavigator 14. Aug 2007 13:40

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Hallo :-D ,
also der Fehler gibt nicht an in welcher Zeile er passiert (bzw siehe unten im Code).

Hier nochmal der Code des Timers :arrow:
Delphi-Quellcode:

procedure TForm1.Timer1Timer(Sender: TObject);

var

j: tjpegimage;
Size: DWORD;
Result : String;


begin
   
   
  SendMessage(camhandle, WM_CAP_EDIT_COPY, 1, 0 );  // make clipboard = bild
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); //img1 = Bild


  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(Result, Size);                          //PC name holen
  if GetComputerName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';


j := tjpegimage.create;
j.assign(Image1.Picture.Bitmap);              //save  (Result = Pc name)
j.SaveToFile('cap_' + Result + '_.jpg');



 (*
idFTP1            :=   TidFtp.Create;

idFTP1.Host      :=   '****';
idFTP1.Username  :=   '****';
idFTP1.Password  :=   '****';


idFTP1.Connect;
idFTP1.ChangeDir('/test/');
idFTP1.Put('cap_' + Result + '_.jpg');   //upload (Result = Pc name)
idFTP1.Disconnect;

//idFTP1.Quit;    *)

end; // wenn ich auf "break" in Delphi klicke, wenn der Fehler kommt, wird diese Zeile makiert. (Violett)
Ich habe noch die "var" Result (=Pc name) reingepackt, da wenn ich es von meinem Pc ausführe, nicht immer die Bilder überschrieben werden; oder ein Konflickt mit dem Pc im Keller auftritt.

So dann erstmal DANKE an alle die mich schon soweit gebracht haben! @inherited: ich hoffe du siehst das Problem :)

Gruß i-n

internetnavigator 14. Aug 2007 14:51

Re: Webcam Bild (JPG) per FTP-Uploaden
 
hab den Fehler gefunden:

Delphi-Quellcode:
j.Free;
:wall: :wall: war eigentlich klar!!!

...Aber ich habe bestimmt noch Probleme :D

Bis dann i-n

inherited 14. Aug 2007 14:53

Re: Webcam Bild (JPG) per FTP-Uploaden
 
kommt der fehler bereits beim ersten durchlauf? wenn ja, setz einen breakpoint auf die erste zeile des codes und geh mit F7 Ziele für Zeile weiter durch, dann siehst du genau in welcher Zeile das problem auftritt.

Roter Kasten: Na dann, viel glück weiterhin.

internetnavigator 14. Aug 2007 15:17

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Nein, erst nach einigen Aufrufen... bzw. jetzt garnicht mehr... (s.o.)

Aber wenn ich jetzt auf dem Server Netrender (Cinema 4D) (Maximiert) öffne, dann macht das Programm keine Bilder mehr :( wie kann ich das ändern?

internetnavigator 15. Aug 2007 16:30

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Es soll doch nur IMMER active sein... Bitteeeee

internetnavigator 24. Aug 2007 23:26

Re: Webcam Bild (JPG) per FTP-Uploaden
 
bitte!! ich brauche nur den code, damit das Programm auch bei maximierten Fenstern, wenn es nicht im Vordergrund ist, weiterläuft. BITTE!

mfg

internetnavigator 25. Aug 2007 08:07

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Hallo mal wieder ;) Ich denke schon ich führe Selbstgespräche hier :D
Bei der Methode, wie ich das Bitmap (JPG) jetzt in Image1.Picture.Bitmap bekomme ist ja leider immer die Zwischenablage nicht zu verwenden. Kann ich das Bild irgendwie mit einem Stream "transportieren"?

Hier mal der entscheidende Code
Delphi-Quellcode:
  SendMessage(camhandle, WM_CAP_EDIT_COPY, 1, 0 ); //Bild in Zwischenablage legen
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); //Bild aus Zwischenablage holen und in Image1 "packen"
ich hoffe ihr wisst, was ich meine...


mfg i-n

internetnavigator 27. Aug 2007 18:41

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Niemand 'ne Ahnung von Bitmap.Streams?

Ach kommt bitte!

Namenloser 27. Aug 2007 19:26

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Lass den Leuten doch auch mal Zeit. Alle 24 Stunden zu pushen reicht locker.

Noch was:
Zitat:

#33|Beitrag Verfasst am: 25.08.2007, 00:26
Zitat:

#34|Beitrag Verfasst am: 25.08.2007, 09:07
wann schläfst du eigentlich? :shock:

internetnavigator 27. Aug 2007 19:51

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Zitat:

Zitat von NamenLozer

Noch was:
Zitat:

#33|Beitrag Verfasst am: 25.08.2007, 00:26
Zitat:

#34|Beitrag Verfasst am: 25.08.2007, 09:07
wann schläfst du eigentlich? :shock:

dazwischen ;) Ne mal im Ernst: Es war Samstag ;) In der Schulzeit kommt soetwas nicht vor - keine Sorge :-D

Aber nett, dass du mich draufhinweist! -> Mir kam der Zeitabstand kleiner vor.

loetmann 6. Sep 2007 21:16

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Zitat:

Zitat von internetnavigator
bitte!! ich brauche nur den code, damit das Programm auch bei maximierten Fenstern, wenn es nicht im Vordergrund ist, weiterläuft. BITTE!
mfg


SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0); //weitergrabben wenn Anwendung minimiert oder verdeckt ist

Delphi-Quellcode:
 

//das im Timer aufrufen
...
capSetCallbackOnFrame(ghCapWnd, integer(@FrameCallbackFunction));
...


uses VideoCap, avicap, VideoMci;

//grabben über callback fuction
function FrameCallbackFunction(AHandle : hWnd; VIDEOHDR : TVideoHDRPtr): bool; stdcall;
begin
 result := true;
  // da diese Callback-Funktion sonst bei jedem Preview-Frame ganz durchlaufen werden würde:
  // jetzt nur noch mehr dann, wenn draußen GrabFrameFlag auf TRUE gesetzt wurde PLUS, für die
  // Hintergrundlaufbarkeit: SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0);

  if GrabFrameFlag = false then exit;
  GrabFrameFlag := false;

  SendMessage(ghCapWnd, WM_CAP_GRAB_FRAME_NOSTOP, 1, 0);

  //erzeuge Grundbildmaße
 with Form1 do
 begin
   with camBitmapInfo.bmiHeader do
   begin
    bild_anzeige.Width:=biWidth;
    bild_anzeige.Height:=biHeight;
    bild_original.Width:=biWidth;
    bild_original.Height:=biHeight;
    bild_old.Width:=biWidth;
    bild_old.Height:=biHeight;
    bild_anzeige.PixelFormat:=pf24bit; //truecolorBild
    bild_original.PixelFormat:=pf24bit; //truecolorBild
    bild_old.PixelFormat:= pf24bit;
   end;

  hCompatibleBitmap:=bild_original.Handle;
  //function sets the bits of color data for a bitmap to the specified values.
  SetBitmapBits(hCompatibleBitmap,VideoHDR^.dwBufferLength,VideoHDR^.lpData); //return= anzahl bytes
 
 //Bild jetzt in bild_original
 ...
 

 end;//form1
 GrabFrameFlag := true;
end;

internetnavigator 6. Sep 2007 22:19

Re: Webcam Bild (JPG) per FTP-Uploaden
 
danke!
Ich werde mich die Tage mal damit beschäftigen, wenn ich Fragen habe, seit ihr die ersten, die es erfahren ;)

Gruß i-n

internetnavigator 7. Sep 2007 16:45

Re: Webcam Bild (JPG) per FTP-Uploaden
 
1. Woher bekomme ich die Componenten für "uses"?
2. Und: Wie kann ich jetzt das Bild (ohne Zwischenspeichern und Clipboard ;)) auf den FTP-Server bekommen?
3. Das Bild ist ja jetzt in "bild_original", oder? aber die (wenn es denn eine ist) Variable "bild_original" ist nirgends definiert. ist sie TJPEG?
4. Und noch meine Letzte Frage: Wenn ich
Delphi-Quellcode:
capSetCallbackOnFrame(ghCapWnd, integer(@FrameCallbackFunction));
aufrufe, was bekomme ich dann zurück, "bild_original"? Also direkt das TJPEG?

Ich weiss es sind viele Fragen, sorry :oops:
mfg i-n


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.
Seite 1 von 2  1 2      

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