How to access the camera from my Windows Phone 8 app (XAML and C#) and save the taken picture in a determined folder?

余生长醉 提交于 2020-01-15 02:45:44

问题


I want the Windows Phone 8 app that I am building at this moment to access the camera for taking a photo when a concrete button on the screen is pressed and then save the image that has been taken into a determined folfer (a folder created into the Windows Phone project by me, not the Windows Phone default image gallery).

Could you help me accesing the camera, taking the picture and saving it into the folder created by me, please? I am using XAML and C#.

Thank you so much!!!


回答1:


I would recommend PhotoCamera class if capture is to be processed on a button in the app

 PhotoCamera myCamera = new Microsoft.Devices.PhotoCamera(CameraType.Primary);
 //viewfinderBrush is a videobrush object declared in xaml
 viewfinderBrush.SetSource(myCamera);
 myCamera.Initialized += myCamera_Initialized;
 myCamera.CaptureCompleted += new EventHandler<CameraOperationCompletedEventArgs>(camera_CaptureCompleted);
 myCamera.CaptureImageAvailable += new EventHandler<Microsoft.Devices.ContentReadyEventArgs>(camera_CaptureImageAvailable);

//Events

   void myCamera_Initialized(object sender, CameraOperationCompletedEventArgs e)
    {
        try
        {
            if (e.Succeeded)
            {

            }
        }
        catch
        {
            MessageBox.Show("Problem occured in camera initialization.");
        }
    }

 void camera_CaptureCompleted(object sender, CameraOperationCompletedEventArgs e)
        {
            try
            {

            }
            catch
            {
                MessageBox.Show("Captured image is not available, please try again.");
            }
        }

void camera_CaptureImageAvailable(object sender, Microsoft.Devices.ContentReadyEventArgs e)
        {
            try
            {

            }
            catch (Exception ex)
            {
                MessageBox.Show("Captured image is not available, please try again.   " + ex.Message);
            }

        }

And there is one more alternative called CameraCaptureTask

CameraCaptureTask cameraCaptureTask;
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
cameraCaptureTask.Show();

void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        MessageBox.Show(e.ChosenPhoto.Length.ToString());

        //Code to display the photo on the page in an image control named myImage.
        //System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
        //bmp.SetSource(e.ChosenPhoto);
        //myImage.Source = bmp;
    }
}

Check this for PhotoCamera class

And this for CameraCaptureTask




回答2:


There's a simple code demonstration here showing your to put the camera API to use for Windows Phone8 apps.

 private void MainPage_Loaded(object sender, RoutedEventArgs e)
 {

 if ((PhotoCamera.IsCameraTypeSupported(CameraType.Primary) == true) ||
     (PhotoCamera.IsCameraTypeSupported(CameraType.FrontFacing) == true))  {
     // Initialize the default camera.
     _photoCamera = new Microsoft.Devices.PhotoCamera();

     //Event is fired when the PhotoCamera object has been initialized
     _photoCamera.Initialized += new EventHandler<Microsoft.Devices.CameraOperationCompletedEventArgs>(OnPhotoCameraInitialized);

      //Set the VideoBrush source to the camera
      viewfinderBrush.SetSource(_photoCamera);
  }
  else {
      // The camera is not supported on the device.
      this.Dispatcher.BeginInvoke(delegate()  {
      // Write message.
          txtDebug.Text = "A Camera is not available on this device.";
      });

  }

}

private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e) {
    int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width);
    int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height);
}

Dont forget to add this line in WMAppManifent.xml file.

<Capability Name="ID_CAP_ISV_CAMERA"/>

you can read here ,

Using Cameras in Your Windows Phone Application



来源:https://stackoverflow.com/questions/22505769/how-to-access-the-camera-from-my-windows-phone-8-app-xaml-and-c-and-save-the

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!