jQuery webcam plugin / ASP.NET, ASP.MVC
Pre náš webový projekt som použil jQuery webcam plugin, ktorý spustí Flash animáciu a odfotí užívateľa. Následne spracovaný obrázok odošle na server. Problém je, že odosiela data po pixeli.
jQuery webcam plugin:
ASP.MVC
[HttpPost]
public ActionResult CameraPicture(string data)
{
if (string.IsNullOrEmpty(data))
return new HttpNotFoundResult();
var width = 320;
var height = 240;
using (var image = new System.Drawing.Bitmap(width, height))
{
var posY = 0;
var posX = 0;
image.SetResolution(80, 60);
foreach (var y in data.Split('|'))
{
posX = 0;
foreach (var x in y.Split(';'))
{
var color = System.Drawing.Color.FromArgb(Convert.ToInt32(x));
image.SetPixel(posX, posY, color);
posX++;
if (posX == width)
break;
}
posY++;
if (posY == height)
break;
}
using (var ms = new System.IO.MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return new FileContentResult(ms.ToArray(), "image/jpeg");
}
}
}
Ak nerobíš ASP.MVC a pracuješ len s ASP.NET, hodnotu data získaš nasledovne:
var data = Request["data"];
JavaScript ako perlička na záver
var pos = 0;
var picture = [];
$("#camera").webcam({
width: 320,
height: 240,
mode: "callback",
onTick: function () { },
onSave: function (data) {
picture.push(data);
pos += 4 * 320;
if (pos >= 4 * 320 * 240) {
$.post("/url/save/image/", { data: picture.join('|') }, function (d) {
});
}
},
onCapture: function () {
pos = 0;
picture = [];
webcam.save();
},
debug: function () {},
onLoad: function () {}
});
// funkcia na urobenie snímku (v zátvorke je počet sekund, koľko má čakať na urobenie obrázka, akože delay)
webcam.capture(0);
Peter Širka
pred 4 mesiacmi, 19.01.2012
