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();
我必须进行并行工作(当然是异步任务)来模糊从文件夹中选择的图像,所以我找到了这个 (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();