示例#1
0
        /// <summary>
        /// Renders current image with applied filters to a buffer and returns it.
        /// Meant to be used where the filtered image is for example going to be
        /// saved to a file.
        /// </summary>
        /// <returns>Buffer containing the filtered image data</returns>
        public async Task<IBuffer> RenderFullBufferAsync()
        {
            IBuffer buffer;

            try
            {
                buffer = await _session.RenderToJpegAsync();
            }
            catch (Exception ex)
            {
                buffer = null;
            }

            return buffer;
        }
        //extract Oriented ROI
        public IBuffer GenerateOrientedROIPicture()
        {
            session.UndoAll();
            var currentSize = new Size(
                outputSize.Width / currentScale,
                outputSize.Height / currentScale);
            var corner = new Point(currentPos.X - currentSize.Width / 2, currentPos.Y - currentSize.Height / 2);


            session.AddFilter(CreateOrientedROIFilter(new Rect(corner, currentSize), currentAngle));
            var task = session.RenderToJpegAsync().AsTask();

            task.Wait();
            return(task.Result);
        }
示例#3
0
        private async System.Threading.Tasks.Task Capture()
        {
            try
            {
                await camera.FocusAsync();

                MemoryStream imageStream = new MemoryStream();
                imageStream.Seek(0, SeekOrigin.Begin);

                CameraCaptureSequence sequence = camera.CreateCaptureSequence(1);
                sequence.Frames[0].CaptureStream = imageStream.AsOutputStream();

                await camera.PrepareCaptureSequenceAsync(sequence);
                await sequence.StartCaptureAsync();

                camera.SetProperty(
                KnownCameraPhotoProperties.LockedAutoFocusParameters,
                AutoFocusParameters.None);

                MediaLibrary library = new MediaLibrary();

                EditingSession session = new EditingSession(imageStream.GetWindowsRuntimeBuffer());

                using (session)
                {
                    session.AddFilter(FilterFactory.CreateSketchFilter(SketchMode.Gray));
                    IBuffer data = await session.RenderToJpegAsync();
                    library.SavePictureToCameraRoll(FileNamePrefix
                                + DateTime.Now.ToString() + ".jpg",
                                data.AsStream());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Failed to save the image to camera roll: " + ex.ToString());
            }
        }