Esempio n. 1
0
        private void ProceedImage(object sender, string pathToImage)
        {
            if (!_cancellationTokenSource.IsCancellationRequested)
            {
                using (var originalImage = new Bitmap(pathToImage))
                {
                    var          rgba  = ImageUtils.GetRgbaFromBitmap(originalImage);
                    SRCNNHandler srcnn = new SRCNNHandler()
                    {
                        Scale      = 2,
                        ScaleModel = Model
                    };

                    int width  = originalImage.Width;
                    int height = originalImage.Height;

                    var taskId = Guid.NewGuid();

                    ProgressLogging(new ProgressMessage(taskId, UpscallingStatuses.Received));

                    Task upscallingTask = Task.Run(
                        async() =>
                    {
                        await srcnn.UpscaleImageAsync(taskId, rgba, width, height, ResultHandling,
                                                      ProgressLogging);
                    }, _cancellationTokenSource.Token);
                    if (_imageLoadingParallel)
                    {
                        _imagePrecessingTasks.RemoveAll(t => t.IsCompleted);
                        _imagePrecessingTasks.Add(upscallingTask);
                    }
                    else
                    {
                        upscallingTask.Wait();
                    }
                }
                File.Delete(pathToImage);
            }
        }
Esempio n. 2
0
        private Task ProceedImage(SendImage message)
        {
            return(Task.Run(() =>
            {
                if (!_cancellationTokenSource.IsCancellationRequested)
                {
                    using (var ms = new MemoryStream(message.Image))
                    {
                        using (var originalImage = new Bitmap(ms))
                        {
                            var rgba = ImageUtils.GetRgbaFromBitmap(originalImage);
                            SRCNNHandler srcnn = new SRCNNHandler()
                            {
                                Scale = 2,
                                ScaleModel = Model
                            };

                            int width = originalImage.Width;
                            int height = originalImage.Height;

                            ProgressLogging(new ProgressMessage(message.TaskId, UpscallingStatuses.Received));

                            Task upscallingTask = Task.Run(
                                async() =>
                            {
                                await srcnn.UpscaleImageAsync(message.TaskId, rgba, width, height, ResultHandling,
                                                              ProgressLogging);
                            }, _cancellationTokenSource.Token);

                            _imagePrecessingTasks.RemoveAll(t => t.IsCompleted);
                            _imagePrecessingTasks.Add(upscallingTask);
                        }
                    }
                }
            }));
        }