2012-02-25 15 views
5

có ai nhận được số này http://www.xarg.org/project/jquery-webcam-plugin/, để làm việc với aps.net mvc 3 không? Tôi không thể giải mã hình ảnh, sử dụng lớp WebImage hoặc BitmapImage.plugin jquery webcam với asp.net mvc 3

Tôi đã mệt mỏi khi làm điều này với Silverlight, nhưng tôi thực sự không chắc chắn về cách tải lên hình ảnh. Tôi không cần phải lưu hình ảnh, tôi chỉ muốn xử lý nó, những gì im thực sự tìm cách làm là đọc một mã vạch thông qua ứng dụng web.

Tôi dường như không thể tìm thấy hướng dẫn tốt để tải lên hình ảnh từ Silverlight hoặc flash lên ứng dụng MVC của tôi.

Xin cảm ơn trước.

+0

Bạn đã thành công trong việc tạo ứng dụng web này có ảnh và tải lên máy chủ để đọc mã vạch không? Tôi chuẩn bị làm chính xác điều tương tự và gặp khó khăn –

+0

Yea, tôi đã thành công trong việc sử dụng Silverlight. Có thể đọc được hình ảnh, nhưng đã có thời gian đọc mã vạch thực sự, có lẽ cần một webcam tốt hơn. – nagates

+0

Nhưng Silverlight không hoạt động trên Android và IOS! Vậy ứng dụng web của bạn không dành cho thiết bị Android và iOS? –

Trả lời

7

documentation chứa nhiều ví dụ. Tất cả những gì cần thiết là đọc và thử.

Vì vậy, dưới đây là cách Index.cshtml xem của bạn có thể trông giống như sử dụng phần HTML5 của trình duyệt để mã hóa các dữ liệu hình ảnh thô đến từ webcam thành một hình ảnh PNG sẽ được gửi đến máy chủ sử dụng một yêu cầu AJAX:

<script src="@Url.Content("~/Scripts/jquery.webcam.js")" type="text/javascript"></script> 

<div id="webcam"></div> 
<a href="#" id="upload">Capture image and send for processing</a> 

<script type="text/javascript"> 
    var pos = 0, ctx = null, saveCB, image = []; 
    var canvas = document.createElement('canvas'); 
    canvas.setAttribute('width', 320); 
    canvas.setAttribute('height', 240); 
    ctx = canvas.getContext('2d'); 
    image = ctx.getImageData(0, 0, 320, 240); 

    var saveCB = function (data) { 
     var col = data.split(';'); 
     var img = image; 
     for (var i = 0; i < 320; i++) { 
      var tmp = parseInt(col[i]); 
      img.data[pos + 0] = (tmp >> 16) & 0xff; 
      img.data[pos + 1] = (tmp >> 8) & 0xff; 
      img.data[pos + 2] = tmp & 0xff; 
      img.data[pos + 3] = 0xff; 
      pos += 4; 
     } 

     if (pos >= 4 * 320 * 240) { 
      ctx.putImageData(img, 0, 0); 
      $.post('@Url.Action("Upload")', { type: 'data', image: canvas.toDataURL("image/png") }, function (result) { 
       if (result.success) { 
        alert('The image was successfully sent to the server for processing'); 
       } 
      }); 
      pos = 0; 
     } 
    }; 

    $('#webcam').webcam({ 
     width: 320, 
     height: 240, 
     mode: 'callback', 
     swffile: '@Url.Content("~/scripts/jscam_canvas_only.swf")', 
     onSave: saveCB, 
     onCapture: function() { 
      webcam.save(); 
     } 
    }); 

    $('#upload').click(function() { 
     webcam.capture(); 
     return false; 
    }); 
</script> 

và điều khiển Trang chủ của bạn:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Upload(string image) 
    { 
     image = image.Substring("data:image/png;base64,".Length); 
     var buffer = Convert.FromBase64String(image); 
     // TODO: I am saving the image on the hard disk but 
     // you could do whatever processing you want with it 
     System.IO.File.WriteAllBytes(Server.MapPath("~/app_data/capture.png"), buffer); 
     return Json(new { success = true }); 
    } 
} 
+0

Câu trả lời hay và cấu trúc mã, tôi thấy điều này dễ làm theo hơn là mã ví dụ thực tế :). Đã xảy ra sự cố khi chuyển dữ liệu trở lại khi chuỗi URI quá dài nhưng sử dụng cuộc gọi ajax không được sắp xếp mà bất kỳ ai khác có vấn đề ... $ .ajax ({ dataType: "json", type : 'POST', url: "vị trí chức năng của bạn ', dữ liệu: {image: canvas.toDataURL (" image/png ")}, thành công: hàm (phản hồi) {} }); –

+0

Tôi đã triển khai mã, nhưng khi thử nghiệm trong thiết bị di động của tôi, không có gì xảy ra ngay cả khi thiết bị di động không yêu cầu sử dụng máy ảnh và không có thông điệp thành công và không có gì trong thư mục app_data.Bất cứ ai có thể giúp tôi không? –

2

bạn có thể cung cấp cho www.scriptcam.com thử xem, có tài liệu phong phú có sẵn trên plugin jquery này.