Popular Posts

Sunday, March 2, 2014

How to get/save image from live stream

Below is the complete solution for get image from live stream and save to local disk.

//=============================================================
    //Please change following variables to suite your need, strIP to the camera IP
        private string strIP = "000.00.0.000";
        private static string ImagePath = "d:\\";
       static string  name = "";
    //===========================================================


// Get image from live stream.
 private void BtnDownload_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string baseUrl = "http://" + strIP + "/cgi-bin/snapshot.cgi?channel=2";

                Uri urlUri = new Uri(baseUrl);
                WebRequest webRequest = WebRequest.CreateDefault(urlUri);
                webRequest.ContentType = "image/jpeg";
                WebResponse webResponse = webRequest.GetResponse();
                var images = new BitmapImage();
                images.BeginInit();
                images.StreamSource = webResponse.GetResponseStream();
                images.EndInit();
                img.Source = images;
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }

//Get image from image control to save on local disk.
 public byte[] GetImageFromImageControl(BitmapImage imageC)
        {
            MemoryStream memStream = new MemoryStream();
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(imageC));
            encoder.Save(memStream);
            return memStream.GetBuffer();
        }

//Save to local disk
 private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var image = GetImageFromImageControl(img.Source as BitmapImage);
                SaveImageToDisk(image);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

public static void SaveImageToDisk(byte[] imageByte)
        {
            MemoryStream ms = new MemoryStream(imageByte);
            Image image = Image.FromStream(ms);
            name = ImagePath + DateTime.Now.Ticks + ".jpeg";
            image.Save(name);
            MessageBox.Show("Image saved at  " + name);
        }

No comments:

Post a Comment