-1
CameraCaptureUI capture = new CameraCaptureUI();

capture.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;

capture.PhotoSettings.CroppedAspectRatio = new Size(1, 2);

capture.PhotoSettings.MaxResolution=CameraCaptureUIMaxPhotoResolution.HighestAvailable

StorageFile storeFile=await capture.CaptureFileAsync(CameraCaptureUIMode.Photo);

if (storeFile != null)
{
    var stream = await storeFile.OpenAsync(FileAccessMode.Read);

    BitmapImage bimage = new BitmapImage();

    bimage.SetSource(stream);

    Image imageitem = new Image();

    imageitem.Source = bimage;

    my_canvas.Children.Add(imageitem);
4

2 に答える 2

0

MediaCapture を使用してビデオを録画することもできます。これは、私が取り組んだプロジェクトからの抜粋です (これの一部は、記憶から今書きました。必要に応じて、家に帰ったら修正します)。

public class CameraController
{
    private MediaCapture _mediaCap;
    private bool _isInitialised;

    public async Task InitialiseWebCam()
    {
        if (!_isInitialised)
        {
            var settings = ApplicationData.Current.LocalSettings;
            string preferredDeviceName = $"{settings.Values["PreferredDeviceName"]}";

            var videoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
            DeviceInformation device = videoDevices.FirstOrDefault(x => x.Name == preferredDeviceName);
            if (device == null)
                device = videoDevices.FirstOrDefault();

            if (device == null)
                throw new Exception("Cannot find a camera device");
            else
            {
                //initialize the WebCam via MediaCapture object
                _mediaCap = new MediaCapture();
                var initSettings = new MediaCaptureInitializationSettings { VideoDeviceId = device.Id };
                await _mediaCap.InitializeAsync(initSettings);
                _mediaCap.Failed += new MediaCaptureFailedEventHandler(MediaCaptureFailed);

                _isInitialised = true;
            }
        }
    }

    public async StorageFile RecordVideo(TimeSpan duration)
    {
        if (!_isInitialised)
            await InitialiseWebCam();

        StorageFile videoFile = await KnownFolders.VideosLibrary.CreateFileAsync(
            $"video_{DateTime.Now.ToString("yyyyMMddHHmmss")}.mp4", CreationCollisionOption.GenerateUniqueName);

        var mediaEncoding = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga);
        await _mediaCap.StartRecordToStorageFileAsync(mediaEncoding, videoFile);
        await Task.Delay(duration);
        await _mediaCap.StopRecordAsync();

        return videoFile;
    }

    private void MediaCaptureFailed(MediaCapture sender, MediaCaptureFailedEventArgs errorEventArgs)
    {
        //TODO: Implement this
    }
}
于 2016-06-09T15:19:22.473 に答える