Example #1
0
        public static async Task <StorageFile> SaveAsync(this StorageItemThumbnail thumbnail, StorageFolder folder, string name, bool encode = false)
        {
            using (var stream = thumbnail.CloneStream())
            {
                var decoder = await BitmapDecoder.CreateAsync(stream);

                var softwareBitmap = await decoder.GetSoftwareBitmapAsync();

                var filename = name + ".png";
                if (encode)
                {
                    filename = WebUtility.UrlEncode(filename);
                }
                bool notExists = !await folder.Contains(filename);

                var file = await folder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);

                if (notExists)
                {
                    using (var filestream = await file.OpenAsync(FileAccessMode.ReadWrite))
                    {
                        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, filestream);

                        encoder.SetSoftwareBitmap(softwareBitmap);
                        await encoder.FlushAsync();
                    }
                }
                return(file);
            }
        }