6

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

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

4

6 回答 6

6

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

我们发现,对于大多数相机,插入时您甚至无法拍照。当您将它们插入 USB 端口时,大多数相机会切换到它们唯一要做的就是传输数据的模式。确定相机是否可以工作的快速方法是将其插入 PC,然后尝试拍照。如果它让你这样做,你就有机会。它还需要支持 PTP。

于 2009-03-01T15:21:46.397 回答
2

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

于 2008-09-16T19:01:48.840 回答
2

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

您可能会发现以下链接很有用。如果我理解正确,这是您正在寻找的示例代码。谷歌是你的朋友 :)

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

于 2008-09-16T19:16:25.513 回答
1

通常,连接相机时,相机会显示为可移动驱动器。

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

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

希望有帮助。

于 2008-09-16T18:59:54.803 回答
0

这取决于您的相机。

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

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

于 2008-09-16T19:00:08.610 回答
0

这将取决于相机的品牌。这是佳能的开始链接。

于 2008-09-16T19:01:03.787 回答