Exemple #1
0
        private async Task <IRandomAccessStream> GetFilteredThumbnailStreamAsync()
        {
#if DEBUG
            System.Diagnostics.Debug.WriteLine("GetFilteredThumbnailStreamAsync invoked " + this.GetHashCode());
#endif

            IRandomAccessStream filteredStream = null;

            using (var ticket = await TicketManager.AcquireTicket())
                using (var stream = await _photo.GetThumbnailAsync())
                {
                    if (Filters.Count > 0)
                    {
                        var list = Filters.Select(filter => filter.GetFilter()).ToList();

                        filteredStream = new InMemoryRandomAccessStream();

                        using (var source = new RandomAccessStreamImageSource(stream))
                            using (var effect = new FilterEffect(source)
                            {
                                Filters = list
                            })
                                using (var renderer = new JpegRenderer(effect))
                                {
                                    var buffer = await renderer.RenderAsync();

                                    await filteredStream.WriteAsync(buffer);
                                }
                    }
                    else
                    {
                        filteredStream = stream.CloneStream();
                    }
                }

            return(filteredStream);
        }