我使用了从 Lumia Imaging SDK 的文档中截取的代码。我的代码中有 Fileopenpicker 并调用 viewActivated 方法。在这种方法中,我使用了 lumiaimaging sdk BlurEffect 代码,您可以在此处找到。没有错误,但我无法使图像模糊。
这是我使用的完整代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
ImagePath = string.Empty;
FileOpenPicker filePicker = new FileOpenPicker();
filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
filePicker.ViewMode = PickerViewMode.Thumbnail;
// Filter to include a sample subset of file types
filePicker.FileTypeFilter.Clear();
filePicker.FileTypeFilter.Add(".bmp");
filePicker.FileTypeFilter.Add(".png");
filePicker.FileTypeFilter.Add(".jpeg");
filePicker.FileTypeFilter.Add(".jpg");
filePicker.PickSingleFileAndContinue();
view.Activated += viewActivated;
}
private async void viewActivated(CoreApplicationView sender, Windows.ApplicationModel.Activation.IActivatedEventArgs args1)
{
//throw new NotImplementedException();
FileOpenPickerContinuationEventArgs args = args1 as FileOpenPickerContinuationEventArgs;
if (args != null)
{
if (args.Files.Count == 0) return;
view.Activated -= viewActivated;
StorageFile storageFile = args.Files[0];
var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
await bitmapImage.SetSourceAsync(stream);
var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream);
RealImage.Source = bitmapImage;
// A blur effect is initialized with selected image stream as source.
IRandomAccessStream fileStream = await storageFile.OpenAsync(FileAccessMode.Read);
var imageStream = new RandomAccessStreamImageSource(fileStream);
using (var filterEffect = new FilterEffect(imageStream))
{
// Initialize the filter and add the filter to the FilterEffect collection
var filter = new BlurFilter(10);
filterEffect.Filters = new IFilter[] { filter };
// Create a target where the filtered image will be rendered to
var target = new WriteableBitmap(400, 400);
// Create a new renderer which outputs WriteableBitmaps
using (var renderer = new WriteableBitmapRenderer(filterEffect, target))
{
// Render the image with the filter(s)
await renderer.RenderAsync();
// Set the output image to Image control as a source
BlurredImage.Source = target;
}
}
}
}