我可以成功地将刚刚使用 kEdsSaveTo_Host 拍摄的图片下载到磁盘并捕捉事件。
但是,由于各种原因,我不需要立即将其下载到电脑上,而是拍摄,然后浏览相机上可用的内容,获取最新图像,然后将其删除。
佳能 SDK 可以做到这一点吗?我真的无法使用 kEdsSaveTo_Camera。如何浏览 SD?我如何下载图像?我可以用佳能 sdk 做些什么,还是应该简单地释放相机,然后使用 Windows API 浏览内容、下载和删除图像?
先感谢您!
您可以通过调用 EdsGetChildCount、EdsGetChildAtIndex 和 EdsGetVolumeInfo 或 EdsGetDirectoryItemInfo 来遍历文件系统。
基本上,使用相机指针作为参数调用 EdsGetChildCount 来获取卷数。使用 EdsGetChildAtIndex 遍历每个卷(再次使用相机指针作为参数)并使用来自 EdsGetChildAtIndex 调用的卷指针调用 EdsGetVolumeInfo 以获取有关卷的信息。
对于每个卷,您可以执行与获取文件和文件夹之前相同的操作,但您将卷指针传递给它,而不是相机指针。要获取有关文件或文件夹的信息,请使用 EdsGetDirectoryItemInfo。此函数返回的结构说明它是文件夹还是文件。
如果它是一个文件夹,您可以再次重复上述操作,但当然使用文件夹指针而不是卷。
要下载文件,您可以执行与使用 SaveTo_Host 相同的操作并使用文件指针。
如果您不介意阅读 C#,我已经在这个项目中实现了所有这些:http: //www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp
您可以在 Camera.cs 文件的底部找到最相关的部分。