【问题标题】:UWP get bytes or pixels from BitmapImageUWP 从 BitmapImage 获取字节或像素
【发布时间】:2021-03-29 20:32:19
【问题描述】:

我必须进行并行工作(当然是异步任务)来模糊从文件夹中选择的图像,所以我找到了这个(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 线程必须是响应式的,而图像是模糊的。提前致谢。

【问题讨论】:

    标签: c# uwp async-await bitmap bitmapimage


    【解决方案1】:

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

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2013-04-19
      • 1970-01-01
      相关资源
      最近更新 更多