【问题标题】:Blur an Image on windows phone在 windows phone 上模糊图像
【发布时间】:2014-06-13 13:29:57
【问题描述】:

我正在使用 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);

为什么这不起作用??

【问题讨论】:

  • 你确定这是一个完整的代码示例吗?这段代码看起来不错。
  • 是的,我确定!它不起作用! @DanielKelley

标签: c# windows-phone-8 windows-phone writeablebitmapex


【解决方案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;
};

【讨论】:

  • 如果图像不是相对的怎么办?图片来源是API的绝对链接
  • @HeshamHaleem 我尝试使用您的代码,它也可以工作。你能分享你正在测试的绝对链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多