Capture Picture From Camera and Save in Media Library in Windows Phone

In this article we will see how to capture a photo using the camera and saving it in the Media Library.

The CameraCaptureTask chooser is used to capture a photo using the Windows Phone's Camera. To work with the CameraCaptureTask, first you need to add the namespace:


Then define a global variable:


In the constructor of the page, you need to instantiate a CameraCaptureTask and attach a completed event handler.


Next you need to show the camera to the user. You can call the Show function anywhere as per your business requirement however I am calling it on the click event of a button as below:


Now in the completed event of the CameraCaptureTask we need to save the image in the Media Library. To work with the Medialibrary, you need to add a reference of Microsoft.Xna.Framework. After adding the reference, add the following namespace:


In the completed event of CameraCaptureTask, make an instance of the MediaLibrary and call the SavePicture method as below:


As you see, the SavePicture function takes two input parameters. It takes the Name of the picture as one input parameter and a picture stream as another. In this example we are saving the picture taken from the camera. You may also save a picture downloaded from services as a stream.

For your reference, the full source code is given below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using Microsoft.Xna.Framework.Media;
namespace PhoneApp17
    public partial class MainPage : PhoneApplicationPage
        // Constructor
        CameraCaptureTask cameraTask; 
        public MainPage()
            cameraTask = new CameraCaptureTask();
            cameraTask.Completed += new EventHandler<PhotoResult>(cameraTask_Completed);
        void cameraTask_Completed(object sender, PhotoResult e)
            if (e.TaskResult == TaskResult.OK)
                MediaLibrary medialibrary = new MediaLibrary();
                medialibrary.SavePicture("givenameofimage", e.ChosenPhoto);
        private void btnShowCamera_Click(object sender, RoutedEventArgs e)

In this way you can save a picture to the Media Library. I hope this article is useful. Thanks for reading.