El documentation contiene muchos ejemplos. Todo lo que se necesita es leer y probar.
Así que aquí es como su punto de vista Index.cshtml
podría ser similar utilizando el elemento canvas de HTML5 del navegador para codificar los datos de imágenes en bruto procedentes de la cámara web en una imagen PNG que se enviará al servidor mediante una petición AJAX en:
<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>
y su controlador principal:
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 });
}
}
¿Ha tenido éxito al crear esta aplicación web que toma una foto y la carga al servidor para leer el código de barras? Estoy a punto de hacer exactamente lo mismo y tengo problemas –
Sí, tengo cierto éxito limitado al usar Silverlight. Capaz de leer la imagen, pero tenía un montón de tiempo leyendo el código de barras real, probablemente necesite una mejor cámara web. – nagates
¡Pero Silverlight no funciona en Android e IOS! ¿Entonces su aplicación web no es para dispositivos Android e IOS? –