将Silverlight网络摄像头图像(ImageSource)保存到服务器

时间:2012-03-28 00:21:18

标签: silverlight silverlight-4.0 webcam

据我所知。我会写什么代码将捕获的图像保存到服务器?没有任何对话框提示保存位置。类似于Facebook的方式。 (我一直无法在网上找到例子)

void CaptureSource_CaptureImageCompleted(object sender, CaptureImageCompletedEventArgs e)
{
    capturedImage.ImageSource = e.Result;
    stopCapture(); // turns off webcam
}

2 个答案:

答案 0 :(得分:2)

不是那么简单。

  1. 在服务器上创建WCF服务。
  2. 在silverlight客户端上消费。
  3. 调用服务方法将图像发送到服务器。
  4. 使用自定义逻辑将其保存在服务器上。
  5. 或者,如果这太复杂了,请关注this tutorial。它是一个相当紧凑的RESTful方法演示。

答案 1 :(得分:1)

我之前做过, 首先 ImageTools是一个很好的库,不是一个好的库,你可以使用。 除此之外,你应该检查相机访问权限。那么这是代码, 希望有所帮助,

/ 捕获图像部分 /

     _captureSource.CaptureImageCompleted += ((s, args) =>
        {
            //some other stuffs
            domainServiceObject.PR_PATIENTPHOTOs.Clear();

            photo = new PR_PATIENTPHOTO();              
            ImageTools.ExtendedImage eimg=args.Result.ToImage();
            var encoder=new ImageTools.IO.Png.PngEncoder();                                 

            Stream stream= eimg.ToStreamByExtension("png");
            if (stream.Length > 512000)
            {                    
                eimg= ExtendedImage.Resize(eimg, 240, new NearestNeighborResizer());                    
                stream = eimg.ToStreamByExtension("png");
            }

/ 重新加载图像部件 /

// note photo.photo是byte []

        photo = domainServerObject.PR_PATIENTPHOTOs.FirstOrDefault();

        if (photo != null)
        {
            using (MemoryStream ms = new MemoryStream(photo.PHOTO, 0, photo.PHOTO.Length))
            {
                ms.Write(photo.PHOTO, 0, photo.PHOTO.Length);
                BitmapImage img = new BitmapImage();
                img.SetSource(ms);
                imagePatientPhoto.Source = img;
            }
        }