2016-06-30 4 views
0

Je peux télécharger sur disque la photo qui vient d'être prise en utilisant kEdsSaveTo_Host et attraper l'événement.Parcourir des images sur une carte SD via Canon EOS SDK (C++)

Cependant, pour diverses raisons, je n'ai pas besoin de le télécharger sur le PC immédiatement mais de tirer, puis de parcourir ce qui est disponible sur l'appareil photo, obtenir la dernière image et l'effacer. Est-ce possible avec le canon SDK?

Je ne peux pas vraiment passer en utilisant kEdsSaveTo_Camera. Comment puis-je parcourir le SD? Comment puis-je télécharger une image? Est-ce quelque chose que je peux faire avec le Canon SDK ou devrais-je simplement libérer les caméras, puis utiliser l'API Windows pour parcourir le contenu, télécharger et supprimer l'image?

merci d'avance!

Répondre

1

Vous pouvez parcourir le système de fichiers en appelant EdsGetChildCount, EdsGetChildAtIndex et EdsGetVolumeInfo ou EdsGetDirectoryItemInfo.

Fondamentalement, appelez EdsGetChildCount avec le pointeur de caméra comme paramètre pour obtenir le nombre de volumes. Parcourez chaque volume avec EdsGetChildAtIndex (à nouveau avec le pointeur de la caméra en paramètre) et appelez EdsGetVolumeInfo avec le pointeur de volume de l'appel EdsGetChildAtIndex pour obtenir des informations sur le volume.

Avec chaque volume, vous pouvez faire la même chose qu'avant d'obtenir des fichiers et des dossiers, mais au lieu du pointeur de caméra, vous lui passez le pointeur de volume. Pour obtenir des informations sur le fichier ou le dossier, utilisez EdsGetDirectoryItemInfo. La structure que cette fonction retourne indique s'il s'agit d'un dossier ou d'un fichier.

Si c'est un dossier, vous pouvez répéter ce qui précède, mais bien sûr utiliser le pointeur de dossiers au lieu des volumes.

Pour télécharger un fichier, vous pouvez faire la même chose qu'avec SaveTo_Host et utiliser le pointeur de fichiers.

Si vous ne me dérange pas lire C# J'ai mis tout cela dans ce projet: http://www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp

Vous pouvez trouver la partie la plus pertinente au bas du fichier Camera.cs.

+0

merci, c'est très utile. Une idée s'il est possible de supprimer des fichiers? – Andrea

+0

@Andrea, pas de problème! et bien sûr, il suffit d'appeler EdsDeleteDirectoryItem avec le pointeur de fichier/dossier que vous avez obtenu en appelant EdsGetDirectoryItemInfo –

+0

merci beaucoup! J'ai manqué cela depuis que j'ai continué à chercher un EdsDeleteFile ou similaire, donc je n'ai même pas pris la peine de lire le EdsDeleteDirectoryItem. Complètement mon mauvais, j'allais bananes =) merci d'être un utilisateur positif SO, en prenant le temps de souligner quelque chose dans la documentation (quoique, pour ma défense, un peu caché: P) – Andrea