![]() |
Delphi-Version: 2005
Bilder von Kamera übertragen
Hallo Community,
ich benötige eine Möglichkeit Bilder mit ihren Metainformationen von einer Fotokamera (!) zu übertragen. Die mir bekannten TWAIN-Schnittstellen liefern leider nur die Bitmaps und keine Informationen wie Aufnahmedatum, etc. |
AW: Bilder von Kamera übertragen
Kann man die Kamera nicht als Massenspeicher anbinden? - Da sollte bei den normalerweise JPGs auch die gewünschte Info schon drin stecken.
Bernhard PS: Wie macht das der Windows--eigene Assistent für Kameras und Scanner? |
AW: Bilder von Kamera übertragen
nein, leider nicht (wenn du nicht meinst, SD-Karte raus und in Kartenleser rein ;-) )
USB-Kameras werden nicht als Massenspeicher verwendet - und bekommen ergo keinen Laufwerksbuchstaben und kein einfach lesbares Dateisystem (wäre ja auch zu einfach:wink: ) Für Scanner (ich denke mal, auch Kameras) gibt es noch die WIA-Schnittstelle - dazu habe ich aber leider nichts Passendes für Delphi gefunden. Existiert dafür irgendwo eine Pascalübersetzung? |
AW: Bilder von Kamera übertragen
Zitat:
normalerweise funktioniert es so: ![]() |
AW: Bilder von Kamera übertragen
also bei der letzten Aldi-Kamera ist es so: Rechner an, USB-Kabel rein, mit der Kamera verbinden, Kamera an, warten (1,5 Sekunden). Danach frägt die Kamera, als was man sie denn verwenden will. Da stehen zur Verfügung: PC, Drucker und Webcam. In den ersten beiden Modi kann man per Laufwerk auf die SD-Karte (oder falls keine drin ist auf den internen Speicher) zugreifen und beim letzteren meldet sich die Kamera als vollwertige Webcam am System an.
Systemkameras gehen da einen klein wenig anderen Weg, sie werden von Win7 (hin und wieder per Plug&Play) aber dennoch als "Kamera" erkannt und haben damit zwar keinen LW-Buchstaben, können aber über den Explorer mit Daten betankt werden und es lassen sich Daten abzapfen. Bernhard |
AW: Bilder von Kamera übertragen
Genau, sie erhalten keinen Laufwerksbuchstaben, lassen sich aber über den Explorer bearbeiten.
Und wie realisiere ich das jetzt mit Delphi? |
AW: Bilder von Kamera übertragen
Zitat:
|
AW: Bilder von Kamera übertragen
Leider erhalten alle meine zur Verfügung stehenden KAmeras keinen LW-Buchstaben.
Wie kann ich trotzdem auf sie zugreifen? |
AW: Bilder von Kamera übertragen
Jupp, es gibt einige Geräte (Kameras, MP3-Player usw.), welche als "Gerät" erkannt und direkt unter dem "Arbeitsplatz" angezeigt werden, anstatt einen Wechseldatenträger zu simulieren, welche Windows standardmäßig an einen Laufwerksbuchstaben koppelt.
Ich würde erstmal über SHGetFolderLocation mir den Arbeitsplatz besorgen, dann darin über irgendeine dieser SH-Funktionen nach der Kamera suchen und mich dann bis zu den Dateien durchkämpfen. Früher gab es mal im Delphi einen Demo-Projekt, welches einen billigen "Windows Explorer" darstellt ... darin wurde mit diesen Funktionen gearbeitet wird ... zuletzt in D4 oder D7 gesehn und k.A. ob's diese Demo noch gibt. |
AW: Bilder von Kamera übertragen
Danke für deinen Ansatz!
SHGetFolderLocation gilt als deprecetad (laut msdn), aber es gibt die (neuere?) Funktion SHGetKnownFolderIDList, über die mit der KNOWNFOLDERID FOLDERID_ComputerFolder das selbe Resultat erreicht werden sollte. Leider weiß ich nicht, wie ich innerhalb dieses VirtualFolders nach meiner Kamera suche! Gibt es dafür einen speziellen SH-Befehl (den ich bislang noch nicht gefunden habe)? |
AW: Bilder von Kamera übertragen
keiner eine Idee?
|
AW: Bilder von Kamera übertragen
Ich habe es jetzt geschafft, alle Elemente des Computers zu listen - die Kamera ist aber nicht dabei! :(
Hier mein Code:
Delphi-Quellcode:
const Flags = $10000 or $08000 or $04000 or $02000 or $01000 or $00800 or $00400 or $00200 or $00100 or $00080 or $00040 or $00020 or $00010; //testweise mal alle.... var ComputerPIDL:PItemIDList; EnumList:IEnumIDList; Name:PChar; NameS:String; VirtualFolder:IShellFolder; ID: PItemIDList; NumIDs: LongWord; begin GetMem(Name,50); Try SHGetSpecialFolderLocation(0,CSIDL_DRIVES,ComputerPIDL); PIDL_GetFileFolder(ComputerPIDL,VirtualFolder); VirtualFolder.EnumObjects( 0, Flags, EnumList); while EnumList.Next(1, ID, NumIDs) = S_OK do begin PIDL_GetDisplayName(VirtualFolder,ID,0,Name,50); NameS:=StrPas(Name); //alle Laufwerke kommen hier an - Geräte NICHT. end; Except Error:=true; exit; End; FreeMem(Name); end; |
AW: Bilder von Kamera übertragen
Portable Device
Vielleicht hilft das weiter: MTP (Media Transfer Protocol) is a protocol and accompanying set of drivers developed by Microsoft to connect portable devices to a Windows Vista, Windows XP, or 2000 (with SP4) PC and synchronize digital media content between them. Media Transfer Protocol Porting Kit ![]() ![]() Auf dieser Seite click here anklicken... Save file to your PC: click here |
AW: Bilder von Kamera übertragen
Danke, nur ist MTP komplett in C (und für mein Programm zu umfangreich), kennt jemand eine Delphi-Übersetzung von PTP (Picture Transfer Protocol)?
|
AW: Bilder von Kamera übertragen
Das MTP (Media Transfer Protocol) ist eine Weiterentwicklung des PTP (Picture Transfer Protocol).
Vielleicht solltest Du doch auf C# oder C++ umsteigen...:lol: |
AW: Bilder von Kamera übertragen
Ich habe es jetzt doch per WIA gelöst .. trotzdem Dank an alle Ideen!
Werde meinen Code noch posten, sobald ich ihn fertiggestellt habe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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