Как сделать снимок с цифровой камеры, подключенной к моему компьютеру через USB-кабель, используя vb.net или asp.net или C#?
Я пишу приложение для редактирования изображений в Windows, используя vb.net/c#. У меня есть требование клиента, чтобы сделать снимок с цифрового фотоаппарата, подключенного к компьютеру.
Как я могу захватить фотографию с подключенного USB устройства цифрового фотоаппарата в моем приложении Windows?
6 ответов
Если вы используете библиотеку Windows Image Acquisition, вы увидите там события для захвата новых событий с камеры. У меня было подобное требование и я написал тестовую установку; мы пошли в местный магазин камер и попробовали каждую камеру, которую они имели. Единственными камерами, которые мы могли найти, которые поддерживали эту функцию, были камеры Nikon серии D.
Мы обнаружили, что с большинством камер вы даже не можете делать снимки, когда они подключены. Когда вы подключаете их к USB-порту, большинство камер переключаются в режим, в котором они только и делают, что передают данные. Самый быстрый способ узнать, работает ли камера вообще, - это подключить ее к ПК, а затем попытаться сделать снимок. Если это позволяет вам сделать это, у вас есть шанс. Также необходимо поддерживать PTP.
Это зависит от интерфейса экспорта камеры. Если это стандартный интерфейс запоминающего устройства, вы просто используете стандартный файловый интерфейс, то есть вы увидите камеру как съемный диск и можете использовать стандартную операцию создания / чтения / записи / файла.
Многие новые камеры имеют интерфейс ptp (протокол передачи изображений). Так что вам нужно будет использовать Windows Image Acquisition API.
Вы можете найти полезную ссылку. Если я правильно понимаю, это пример кода именно для того, что вы ищете. Гугл твой друг:)
Еще одна информация: многие камеры будут поддерживать интерфейсы как запоминающих устройств, так и интерфейсов ptp, и их можно будет выбрать с помощью пользовательского интерфейса камеры. В случае автоматического режима камера, вероятно, переключится на интерфейс ptp.
Я предполагаю, что вы хотите активировать действие по съемке с компьютера, к которому подключена камера. Если это так, то первое, что я бы сделал, - это поиск API для этой конкретной модели камеры. Я не верю, что существует стандартный протокол / структура для взаимодействия с цифровыми камерами, кроме доступа к карте памяти внутри камеры.
Обычно камера отображается как съемный диск при подключении.
Поэтому для приложения Winforms просто позвольте пользователю выбрать диск и изображение, которое вы хотите загрузить. Вы можете выполнить любую обработку, если у вас есть FileStream изображения.
В ASP.net вам понадобится элемент управления FileUpload, где пользователь снова может выбрать диск и изображение для загрузки. Обработка на этот раз будет через MemoryStream для объекта HttpRequest.Files.
Надеюсь, это поможет.
Это зависит от вашей камеры.
Многие камеры просто монтируются в качестве запоминающих устройств USB. Если это так, то вы можете просто скопировать файл из видимой файловой системы, как любой другой файл на внешнем диске.
Если камера не делает свое содержимое доступным таким образом, вам необходимо просмотреть документацию к драйверу камеры, чтобы узнать, как они рекомендуют взаимодействовать с ним.
Это будет зависеть от марки камеры. Вот ссылка для начала для Canon.