Размытие изображения на Windows Phone
Я использую библиотеку WriteableBitmapEX, пытаясь размыть растровое изображение на Windows Phone 8 Я попробовал этот код
Uri uri = new Uri(AnyUri, UriKind.RelativeOrAbsolute);
BitmapImage img1 = new BitmapImage();
img1.UriSource = uri;
img1.CreateOptions = BitmapCreateOptions.None;
WriteableBitmap wbm = new WriteableBitmap(img1);
var wbm2 = WriteableBitmapExtensions.Convolute(wbm, WriteableBitmapExtensions.KernelGaussianBlur5x5);
PanoramaBackground.ImageSource = wbm2;
Но есть исключение "Ссылка на объект не установлена на экземпляр объекта" в строке WriteableBitmap wbm = new WriteableBitmap(img1);
Почему это не работает??
1 ответ
Решение
Это должно работать:
WriteableBitmap bitmap = BitmapFactory.New(0, 0).FromContent("RelativePathHere.png");
var blurredBitmap = WriteableBitmapExtensions.Convolute(bitmap, WriteableBitmapExtensions.KernelGaussianBlur5x5);
ImageControl.Source = blurredBitmap;
РЕДАКТИРОВАТЬ
Хорошо, похоже, вы получаете изображение из Интернета и у вас возникла исключительная ситуация, потому что изображение еще не загружено. Вам необходимо подписаться на обработчик событий ImageOpened. Вот код:
Uri uri = new Uri("AbsoluteUriPath.png", UriKind.Absolute);
BitmapImage img1 = new BitmapImage(uri);
img1.CreateOptions = BitmapCreateOptions.None;
img1.ImageOpened += (s, e) =>
{
WriteableBitmap bitmap = new WriteableBitmap(img1);
var blurredBitmap = WriteableBitmapExtensions.Convolute(bitmap,
WriteableBitmapExtensions.KernelGaussianBlur5x5);
ImageControl.Source = blurredBitmap;
};