C# 如何使用vb.net、asp.net或C通过USB电缆从连接到计算机的数码相机拍照?

C# 如何使用vb.net、asp.net或C通过USB电缆从连接到计算机的数码相机拍照?,c#,vb.net,image-capture,C#,Vb.net,Image Capture,我正在使用vb.net/c编写图片编辑windows窗体应用程序。我有一个客户的要求,从连接到计算机的数码相机捕捉照片 如何在windows应用程序中从USB连接的数码相机设备中捕获照片?通常相机在连接时显示为可移动驱动器 因此,对于Winforms应用程序,只需让用户选择要上载的驱动器和图片。一旦有了图片的文件流,就可以进行任何处理 在ASP.net中,您需要一个FileUpload控件,用户可以在其中再次选择要上载的驱动器和图片。这次将通过HttpRequest.Files对象上的Memor

我正在使用vb.net/c编写图片编辑windows窗体应用程序。我有一个客户的要求,从连接到计算机的数码相机捕捉照片


如何在windows应用程序中从USB连接的数码相机设备中捕获照片?

通常相机在连接时显示为可移动驱动器

因此,对于Winforms应用程序,只需让用户选择要上载的驱动器和图片。一旦有了图片的文件流,就可以进行任何处理

在ASP.net中,您需要一个FileUpload控件,用户可以在其中再次选择要上载的驱动器和图片。这次将通过HttpRequest.Files对象上的MemoryStream进行处理


希望有帮助。

这取决于您的相机

许多摄像头将简单地安装为USB大容量存储设备。如果是这种情况,那么您可以像复制外部磁盘上的任何其他文件一样,从可见文件系统复制该文件


如果相机无法以这种方式提供其内容,您需要查看相机驱动程序文档,了解他们建议如何与之交互。

这取决于相机的品牌。这里有一个开始的链接。

我假设您想激活从相机连接的计算机拍照的操作。如果是这样的话,那么我要做的第一件事就是为特定的相机模型搜索API。除了访问相机内的存储卡之外,我认为没有标准的协议/框架用于与数码相机交互。

这取决于相机导出的接口。如果这是标准的大容量存储接口,您只需使用标准的文件接口,即您可以将相机视为可移动磁盘,并可以使用标准的创建/读取/写入/文件操作。 许多新相机具有ptp图像传输协议接口。因此,您需要使用API

您可能会发现以下内容很有用。如果我理解正确的话,这是一个示例代码,正好说明您在寻找什么。谷歌是你的朋友:


另一条信息:许多摄像头都支持大容量存储和ptp接口,并且可以通过摄像头用户界面进行选择。在自动模式下,相机可能会切换到ptp界面。

如果使用Windows图像采集库,您将看到用于捕获相机新图片事件的事件。我有一个类似的要求,并编写了一个测试平台;我们去了当地的照相机商店,试了他们所有的照相机。我们能找到的唯一支持此功能的相机是尼康D系列相机


我们发现,对于大多数相机,你甚至不能在接通电源的情况下拍照。当您将它们插入USB端口时,大多数相机将切换到一种模式,在这种模式下,它们唯一要做的就是传输数据。要想知道照相机是否能正常工作,最快捷的方法就是把它插入电脑,然后试着拍一张照片。如果它让你这么做,你就有机会了。它还需要支持PTP。

谢谢Mark。这个链接将帮助我找到我正在使用的相机型号的SDK。谢谢,我阅读了WIA文档,可能是c/c++?不适用于VB.nET,CMatt@Nikon D系列是否支持此操作?