Ejemplo n.º 1
0
        /// <summary>
        /// 停止预览
        /// </summary>
        public static async Task StopPreview()
        {
            try
            {
                if (CameraPreviewSizeList != null)
                {
                    CameraPreviewSizeList.Clear();
                }
                CameraPreviewSizeList = null;
                if (CameraPhotoSizeList != null)
                {
                    CameraPhotoSizeList.Clear();
                }
                await CloseLowLagPhoto();

                CameraPhotoSizeList        = null;
                IsSupportROI               = false;
                IsSupportContinuousCapture = false;
                IsSupportHWZoom            = false;
                if (MainCamera != null)
                {
                    try
                    {
                        await MainCamera.StopPreviewAsync();
                    }
                    catch (Exception ex)
                    {
                    }
                    try
                    {
                        MainCamera.Dispose();
                    }
                    catch (Exception ex)
                    {
                    }
                }
                MainCamera       = null;
                CurrentCamDevice = null;
                FailedIndex      = 1;
                IsCanUseCamera   = false;
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 设置分辨率
        /// </summary>
        private static async Task SetSize()
        {
            try
            {
                var width  = ConfigHelper.Info.CameraPhotoSizeWidth;
                var height = ConfigHelper.Info.CameraPhotoSizeHeight;
                if (IsHavePhotoStream == true)
                {
                    //获得分辨率
                    CameraSizeInfo photoSize = null;
                    foreach (var item in CameraPhotoSizeList)
                    {
                        if (item.Width == width && item.Height == height)
                        {
                            photoSize = item;
                            break;
                        }
                    }
                    if (photoSize == null)
                    {
                        var maxTag = CameraPhotoSizeList.Max(li => li.SizeTag);
                        photoSize = CameraPhotoSizeList.FirstOrDefault(li => li.SizeTag == maxTag);
                    }
                    var            photoRato       = Convert.ToDouble(photoSize.Width) / photoSize.Height;
                    var            tempPreviewList = CameraPreviewSizeList.Where(li => Convert.ToDouble(li.Width) / li.Height == photoRato);
                    CameraSizeInfo previewSize     = null;
                    if (tempPreviewList.Count() > 0)
                    {
                        var maxTag = tempPreviewList.Max(li => li.SizeTag);
                        previewSize = tempPreviewList.FirstOrDefault(li => li.SizeTag == maxTag);
                    }
                    else
                    {
                        var maxTag = CameraPreviewSizeList.Max(li => li.SizeTag);
                        previewSize = CameraPreviewSizeList.FirstOrDefault(li => li.SizeTag == maxTag);
                    }
                    if (previewSize == null)
                    {
                        return;
                    }
                    //设置
                    await MainCamera.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, previewSize.Data);

                    await MainCamera.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.Photo, photoSize.Data);
                }
                else
                {
                    //获得分辨率
                    CameraSizeInfo nowSize = null;
                    foreach (var item in CameraPreviewSizeList)
                    {
                        if (item.Width == width && item.Height == height)
                        {
                            nowSize = item;
                            break;
                        }
                    }
                    if (nowSize == null)
                    {
                        var maxTag = CameraPreviewSizeList.Max(li => li.SizeTag);
                        nowSize = CameraPreviewSizeList.FirstOrDefault(li => li.SizeTag == maxTag);
                    }
                    //设置
                    await MainCamera.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoPreview, nowSize.Data);
                }
                //获得设置分辨率
                var settingVideoRes = (VideoEncodingProperties)MainCamera.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview);
                CurrentPreviewW = settingVideoRes.Width;
                CurrentPreviewH = settingVideoRes.Height;
                //获得设置分辨率
                if (IsPhotoFromImagePropStream == true)
                {
                    var settingPhotoRes = (ImageEncodingProperties)MainCamera.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.Photo);
                    CurrentPhotoW = settingPhotoRes.Width;
                    CurrentPhotoH = settingPhotoRes.Height;
                }
                else
                {
                    var settingPhotoRes = (VideoEncodingProperties)MainCamera.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.Photo);
                    CurrentPhotoW = settingPhotoRes.Width;
                    CurrentPhotoH = settingPhotoRes.Height;
                }
                //保存设置
                if (ConfigHelper.Info.CameraPhotoSizeWidth != CurrentPhotoW || ConfigHelper.Info.CameraPhotoSizeHeight != CurrentPhotoH)
                {
                    ConfigHelper.Info.CameraPhotoSizeWidth  = CurrentPhotoW;
                    ConfigHelper.Info.CameraPhotoSizeHeight = CurrentPhotoH;
                    ConfigHelper.Save();
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获得照片分辨率
        /// </summary>
        private static void GetPhotoSize()
        {
            if (PhotoSource == PhotoCaptureSource.VideoPreview)
            {
                return;
            }
            var photoSizeList = MainCamera.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo);
            var imageSizeList = new List <ImageEncodingProperties>();
            var videoSizeList = new List <VideoEncodingProperties>();

            foreach (var item in photoSizeList)
            {
                if (item.Type == "Image")
                {
                    var imageSize = (ImageEncodingProperties)item;
                    if (imageSize.Width < AppDefaultHelper.CAMERA_VGA_WIDTH || imageSize.Height < AppDefaultHelper.CAMERA_VGA_HEIGHT)
                    {
                        continue;
                    }
                    imageSizeList.Add(imageSize);
                }
                else
                {
                    var videoSize = (VideoEncodingProperties)item;
                    if (videoSize.Width < AppDefaultHelper.CAMERA_VGA_WIDTH || videoSize.Height < AppDefaultHelper.CAMERA_VGA_HEIGHT)
                    {
                        continue;
                    }
                    var oldItem = videoSizeList.FirstOrDefault(li => li.Width == videoSize.Width && li.Height == videoSize.Height);
                    if (oldItem == null)
                    {
                        videoSizeList.Add(videoSize);
                    }
                }
            }
            if (CameraPhotoSizeList == null)
            {
                CameraPhotoSizeList = new List <CameraSizeInfo>();
            }
            else
            {
                CameraPhotoSizeList.Clear();
            }
            if (imageSizeList.Count > 0)
            {
                imageSizeList.Sort((Comparison <ImageEncodingProperties>)((p1, p2) =>
                {
                    if (p1 == null || p2 == null)
                    {
                        return(0);
                    }
                    uint pixels0 = p1.Height * p1.Width;
                    uint pixels1 = p2.Height * p2.Width;
                    if (pixels0 > pixels1)
                    {
                        return(1);
                    }
                    return((int)pixels0 == (int)pixels1 ? 0 : -1);
                }));
                foreach (var item in imageSizeList)
                {
                    CameraPhotoSizeList.Add(new CameraSizeInfo(item, item.Width, item.Height));
                }
                IsPhotoFromImagePropStream = true;
            }
            else if (videoSizeList.Count > 0)
            {
                videoSizeList.Sort((Comparison <VideoEncodingProperties>)((p1, p2) =>
                {
                    if (p1 == null || p2 == null)
                    {
                        return(0);
                    }
                    uint pixels0 = p1.Height * p1.Width;
                    uint pixels1 = p2.Height * p2.Width;
                    if (pixels0 > pixels1)
                    {
                        return(1);
                    }
                    return((int)pixels0 == (int)pixels1 ? 0 : -1);
                }));
                foreach (var item in videoSizeList)
                {
                    CameraPhotoSizeList.Add(new CameraSizeInfo(item, item.Width, item.Height));
                }
                IsPhotoFromImagePropStream = false;
            }
        }