UWP 从 BitmapImage 获取字节或像素

UWP get bytes or pixels from BitmapImage

我必须进行并行工作(当然是异步任务)来模糊从文件夹中选择的图像,所以我找到了这个 (BitmapImage),但问题是我不知道如何访问它的字节或像素对象,以便我可以更改它们、模糊或其他内容:

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
            folderPicker.FileTypeFilter.Add(".jpg");
            folderPicker.FileTypeFilter.Add(".jpeg");
            folderPicker.FileTypeFilter.Add(".png");

            var folder = await folderPicker.PickSingleFolderAsync();
            var filesList = await folder.GetFilesAsync();



            for (int i = 0; i < filesList.Count; i++)
            {
                using (var stream = await filesList[i].OpenAsync(Windows.Storage.FileAccessMode.Read))
                {
//Here I will use some array of BitmapImage 
                    var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
                    await bitmapImage.SetSourceAsync(stream);

                    //show Image on Form
                    imageSourceForm.Source = bitmapImage;
                }

            }


那么有没有什么方法可以获取这个对象的像素或字节,或者你知道我可以使用什么来工作,但是使用异步任务。最重要的部分是 UI Thread 必须响应,而图像是模糊的。提前致谢。

您可以使用以下代码获取图像的字节数:

var random = await Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(filesList[i]).OpenReadAsync();
Windows.Graphics.Imaging.BitmapDecoder decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(random);
Windows.Graphics.Imaging.PixelDataProvider pixelData = await decoder.GetPixelDataAsync();

//Access pixel buffer in such a way
byte[] bytes = pixelData.DetachPixelData();