Entwickler-Ecke
Multimedia / Grafik - Bild von WebCam speichern
SmileySN - So 06.03.11 16:39
Titel: Bild von WebCam speichern
In
http://www.delphi-forum.de/topic_Bild+von+Webcam+anzeigen+lassen_59027.html wurde ein schöner SourceCode erwähnt, der auch sofort bei mir funktioniert hat.
Nur das speichern des Bildes funktioniert nicht.
Es wird die Procedure Bildmachen aufgerufen und darin CapGrabSingleFrame.
Das ruft dann auch die Funktion capFileSaveDIB(ghCapWnd, LongInt(@achSingleFileName)) auf.
Die Übergabe Parameter sind meiner Ansicht nach korrekt und es wird eine 1 als Rückgabecode zurückgegeben.
Es wird jedoch keine Datei in dem übergebenen Verzeichnis angelegt.
Diese Function sollte doch wohl zum speichern gedacht sein ?
Mein Betriessystem ist Win7 x64, kann das ein Problem sein ?
Für Hilfen wäre ich dankbar.
jaenicke - So 06.03.11 18:14
Das liest sich als ob du in dem Verzeichnis keine Schreibrechte hast und die Datei schlicht im VirtualStore gespeichert wird. Um da hinzukommen, kannst du im Windows Explorer als Verzeichnis eingeben:
Quelltext
1:
| %APPDATA%\..\Local\VirtualStore |
SmileySN - So 06.03.11 18:39
ich habe es schon mit zwei festen werten probiert C:\Temp\Mein_Bild.bmp und Z:\Temp\Mein_Bild.bmp Z ist meine zweite Platte.
In diesen Verzeichnissen kann ich schreiben und löschen.
SmileySN - So 06.03.11 18:46
Ich hab was entdeckt, er speichert die Datei, jedoch unter dem Namen Z.
Oder wenn ich auf Platte C speichere unter dem Namen C im Programmverzeichnis.
SmileySN - So 06.03.11 18:57
Es muss etwas mit dem Array of Char zu tun haben, das mein D2010 anders auswertet als D7.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Procedure CapGrabSingleFrame; Var achSingleFileName: Array [0 .. 255] Of Char; Begin If ghCapWnd = 0 Then exit;
capGrabFrame(ghCapWnd); StrPCopy(achSingleFileName, gCapSingleImageFileName); capFileSaveAS(ghCapWnd, LongInt(@achSingleFileName)); |
jaenicke - So 06.03.11 19:08
Dann werden da offenbar AnsiChars erwartet. Denn dann ist das zweite Zeichen bei deinem Code das Nullzeichen und damit das Ende des Strings. Brauchst du eigentlich wirklich den Cast? Welchen Typ hat denn bei dir der zweite Parameter (in der Deklaration von capFileSaveAS)?
Jedenfalls musst du statt Char einfach AnsiChar nehmen vermute ich. ;-)
SmileySN - So 06.03.11 19:24
Ich habe mich selbst reingelegt, die Idee mit AnsiChar war schon richtig wie ich vermutete habe, nur habe ich gleichzeitig vorher versucht von capFileSaveDIB auf capFileSaveAs umzustellen und habe das nicht wieder zurückgestellt.
Mit capFileSaveDIB und AnsiChar für das Array funktioniert es.
Das Array war mit Array... of Char 512 groß mit Array... of AnsiChar ist es nur 256 groß wie es sein soll. Also die Unicodeproblematik.
Die Variable ist in capFileSaveDIB als Longint deklariert.
Danke Jaenicke für die Hilfe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!