Как вы снимаете изображение с веб-сайта в мире .Net? - PullRequest
2 голосов
/ 10 марта 2011

У меня есть система управления онлайн-бронированием, которая требует, чтобы были сделаны снимки людей, которые были зарезервированы в систему. В настоящее время я поддерживаю загрузку изображений вручную на веб-сайт из локального каталога на клиентском компьютере (например, Facebook, LinkedIn и т. Д.). Однако мне также нужно, чтобы клиент мог нажать кнопку, позволяющую ему использовать камеру (веб-камеру или другое), подключенную к клиентскому компьютеру, чтобы сделать снимок и автоматически загрузить его на сервер.

Клиентская среда основана на Windows, а моя среда разработки - ASP.Net MVC 3.

Существуют ли какие-либо сторонние элементы управления ActiveX или Flash, которые могут это сделать?

Ответы [ 2 ]

4 голосов
/ 13 марта 2011

Я нашел стороннюю библиотеку Flash + JavaScript с открытым исходным кодом, которая сделала это довольно простым, под названием ' jpegcam '.

Следующий код построен на Asp.Net MVC 3 (Razor View + T4MVC).


Шаг 1 : включить библиотеку JavaScript

<script type="text/javascript" src="@Url.Content("~/Scripts/jpegcam/htdocs/images.js")"></script>

Шаг 2 : настройте jpegcam и подключите необходимые крючки

<script type="text/javascript">
    webcam.set_api_url('@Url.Action(MVC.Images.Snapshot())');
    webcam.set_swf_url('@Url.Content("~/Scripts/jpegcam/htdocs/webcam.swf")');
    webcam.set_quality(90); // JPEG quality (1-100)
    webcam.set_shutter_sound(false, '@Url.Content("~/Scripts/jpegcam/htdocs/shutter.mp3")');
    webcam.set_hook('onComplete', 'upload_complete');

    document.write(webcam.get_html(320, 240));

    function upload() {
        webcam.freeze();  // Snapshot the image from the camera
        webcam.upload();  // POST the data w/ content type 'image/jpeg'
    }
    function upload_complete(response) {
        var json = jsonParse(response);
        if (json.Redirect) {
            window.location.replace(json.Redirect);
        } else if (json.Error) {
            Notifier.Error('Error', json.Error.Message);
            webcam.reset();
        } else {
            Notifier.Error('Error', 'An unknown error has occurred.');
            webcam.reset();
        }
    }
</script>

Примечание: вызов webcam.set_api_url() устанавливает URL-адрес POST.

Шаг 3 : Подключите кнопки в представлении

<p class="actions">
    <input id="capture-configure" class="secondary-button" type="button" value="Configure..." onclick="webcam.configure()" />
    <input id="capture-submit" class="primary-button" type="button" value="Snap Mugshot" onclick="upload()" />
    <span class="alternate">
        or <a class="cancel" href="@Url.Action(MVC.Images.View())">Cancel</a>
    </span>
</p>

Шаг 4 : Создайте действие контроллера для обслуживания POST

[HttpPost]
public virtual ActionResult Snapshot()
{
    var image = new System.Web.Helpers.WebImage(Request.InputStream);
    // Do fun, amazing things with the jpeg image
    return RedirectToAction(MVC.Images.View());
}

Примечание: System.Web.Helpers.WebImage является частьюпакета NuGet «microsoft-web-helpers».

1 голос
/ 10 марта 2011

Может быть, вы могли бы использовать Silverlight 4 для этого?Версия 4 поставляется с поддержкой веб-камер.

Вот учебник на SilverlightShow.net

...