【问题标题】:Decoding a jpg in the background in WP7在 WP7 中解码背景中的 jpg
【发布时间】:2012-03-28 23:46:30
【问题描述】:

我在市场上有很多应用程序,到目前为止,通过更改我的功能或加倍努力,我已经能够解决无法在后台将 jpg 解码为 WriteableBitmap 的问题。

我发现一种情况,我想不出“解决”问题的好方法。我需要对从 MediaLibrary 获得的图像进行解码,将其分辨率降低到可管理的值 (800x800),进行潜在的旋转并保存到本地存储。到目前为止,花费最多时间 (80%) 的事情是将位图解码为 800x800 - 它需要 700 毫秒到 1000 毫秒。用户在开始时可能会添加 7-10 张图片,这意味着等待添加图片的时间约为 10 秒。

我尝试懒惰地这样做,但在某些时候你需要支付吹笛者的费用,而此时应用程序基本上会卡顿约 1000 毫秒,而且体验不是很好。

是否有其他方法可以在后台以某种方式加载图像?

(请注意为什么 CreateOptions.BackgroundCreation 对我没有好处:它将图像加载到 BitmapImage 中,如果您只想使用它,这很好,但对于我需要做的事情,即在独立存储)。

【问题讨论】:

  • 您只是想将工作转移到后台线程吗?
  • 是的 - 希望能够在后台线程上解码 JPG(像 PictureDecoder.DecodeJpeg(stream, width, height) 那样)。

标签: c# multithreading windows-phone-7 jpeg ui-thread


【解决方案1】:

不幸的是,BitmapImage 的构造函数中的某些内容需要在 UI 线程上运行。 :(

我还没有找到解决方法,但也没有看到像你所说的那样解码需要任何时间。

【讨论】:

  • 是的 - 这就是要点(尽管我说的是 WriteableBitmap,它也是一个 UIElement,因此与您描述的问题相同)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2015-03-25
  • 2013-04-03
  • 1970-01-01
相关资源
最近更新 更多