我是UWP应用程序开发的新手,并尝试构建一个图像处理应用程序。我正在使用https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/imaging中的代码但是我得到了这样的异常:
SoftwareBitmapSource :: SetBitmapAsync仅支持具有正宽度/高度,bgra8像素格式和预乘或无alpha 的SoftwareBitmap。在代码await source.SetBitmapAsync(sbitmap);
中,我想知道这种方法是否真的有这么多限制,如果有的话,我应该使用它的限制最少。代码段如下
FileOpenPicker fileOpenPicker = new FileOpenPicker();
fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
fileOpenPicker.FileTypeFilter.Add(".jpg");
fileOpenPicker.ViewMode = PickerViewMode.Thumbnail;
var inputFile = await fileOpenPicker.PickSingleFileAsync();
if(inputFile != null)
{
SoftwareBitmap sbitmap;
using (IRandomAccessStream stream = await inputFile.OpenAsync(FileAccessMode.Read))
{
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
sbitmap = await decoder.GetSoftwareBitmapAsync();
}
var source = new SoftwareBitmapSource();
await source.SetBitmapAsync(sbitmap);
**Exception--->**imageControl.Source = source;
}
答案 0 :(得分:6)
这是一个已知问题。现在你可以通过使用SoftwareBitmap.Convert来解决这个问题,以获得一个Bgra8预乘的SoftwareBitmap来显示
SoftwareBitmap displayableImage = SoftwareBitmap.Convert(sbitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);