如何使用vb.net或者asp.net或者C#通过USB电缆从连接到计算机的数码相机拍摄照片?
我正在使用vb.net/c#编写图片编辑Windows窗体应用程序。我有一个客户要求,以从连接到计算机的数码相机捕获照片。
如何在Windows应用程序中从USB连接的数码相机设备捕获照片?
解决方案
回答
通常,连接后,相机会显示为可移动驱动器。
因此,对于Winforms应用程序,只需让用户选择驱动器和我们要上传的图片即可。拥有图片的FileStream后,即可进行任何处理。
在ASP.net中,我们将需要一个FileUpload控件,用户可以在其中再次选择要上传的驱动器和图片。这次的处理将通过HttpRequest.Files对象上的MemoryStream进行。
希望能有所帮助。
回答
这取决于相机。
许多相机将简单地安装为USB大容量存储设备。如果是这种情况,那么我们就可以像从外部磁盘上的任何其他文件一样,从可见文件系统中复制文件。
如果相机无法以这种方式提供其内容,则需要查看相机驱动程序文档以了解他们建议如何与之交互。
回答
这将取决于相机的品牌。这是佳能开始的链接。
回答
我假设我们想激活从照相机所连接的计算机拍摄照片的操作。如果是这种情况,那么我要做的第一件事就是为该特定相机型号搜索API。我不相信除了访问相机内的存储卡外,还没有用于与数码相机交互的标准协议/框架。
回答
这取决于相机导出的接口。如果这是标准的大容量存储界面,则仅使用标准的文件界面,即我们将相机视为可移动磁盘,并且可以使用标准的"创建/读取/写入/文件"操作。
许多新相机具有ptp(图片传输协议)接口。因此,我们将需要使用Windows Image Acquisition API。
我们可能会发现以下有用的链接。如果我正确理解,这是我们正在寻找的示例代码。 Google是朋友:)
另一个信息:许多摄像机将同时支持海量存储和ptp接口,并且可以通过摄像机用户界面进行选择。在自动模式下,摄像机可能会切换到ptp界面。
回答
如果我们使用Windows图像采集库,则将在其中看到用于捕获相机新图片事件的事件。我有类似的要求,并写了一个测试台。我们去了当地的相机商店,尝试了所有的相机。我们唯一能找到支持此功能的相机是尼康D系列相机。
我们发现,对于大多数相机而言,即使插上相机也无法拍照。将它们插入USB端口后,大多数相机将切换到只能传输数据的模式。找出相机是否可以正常工作的快速方法是将其插入PC,然后尝试拍摄照片。如果它允许我们这样做,那么我们就有机会。它还需要支持PTP。