【问题标题】:Some JPEGs not displaying correctly / Size limitation某些 JPEG 无法正确显示/大小限制
【发布时间】:2012-02-12 17:26:11
【问题描述】:

我有一个应用程序,我可以在其中从 Web 下载 jpeg,对其进行解码并在 Windows Phone 7.1 上显示。它运作良好,除了一个单一的 jpeg 文件。我用数百个 jpeg 尝试了这个应用程序,这个问题很少发生。

顺便说一句,我尝试使用 PictureDecoder.DecodeJpeg 和 ImageTools 的 Jpeg 解码器解码 jpeg。两者都产生了相同的结果。图片的 %60 或 %70 显示为黑色,其余部分正常。

注意:这不是 2000 像素的限制问题。我通过在解码后将图像分成几部分来解决这个问题。

另一个注意:我检查了那些黑色区域的像素值,它们不是 0(初始值)。

另一个注意事项2:在 XAML 中使用 <image> 控件并将其源设置为以下 URL 是可行的。但这对我来说不是一个选择,因为我需要将它分成几部分(因为 2000 像素的问题)。

这是我遇到问题的 jpeg:http://d24w6bsrhbeh9d.cloudfront.net/photo/1840288_700b_v1.jpg

更新:解码该 JPEG 后,我再次对其进行编码并将其保存到独立本地存储中,并使用独立存储资源管理器工具获取该文件。我可以显示图像,因此它被正确解码和编码。我仍在调查这个问题。

【问题讨论】:

  • 我尝试用我的 jpeg 解码器读取图像,它解码得很好。唯一值得注意的是它是一个渐进的 jpeg。您是否尝试读取存储为基线 jpeg 的相同图像?这可能是 WP7 的渐进式 jpeg 解码器中的一个错误。
  • 感谢您的评论。我检查了其他一些适用于我的解码器的照片,它们都是渐进式的。我开始认为这可能不是解码器问题,我仍在调查。如果我找到答案,我会更新这篇文章。
  • @mostruash,将答案移至答案帖并标记为答案,以帮助有类似问题的人专注于答案部分。

标签: c# .net silverlight jpeg windows-phone-7.1


【解决方案1】:

问题已解决:找不到原因

我通过降低图像的最大高度解决了这个问题。由于 Windows Phone 7 受到 2000 像素 x 2000 像素的限制,因此我相应地分割了我的图像。它适用于数百张图像,除了少数(100 分之一)。不,这不是浮点数舍入问题,所有碎片的高度都为最大值。 2000 像素。现在我将最大数字从 2000 减少到 1800 以下并且它可以工作。但是,为什么会发生这种情况对我来说仍然是个谜。

【讨论】:

  • 这可能是由于操作系统阻止应用程序使用过多 RAM。一个 2000x2000 的彩色图像将在内部存储为 RGB32 并占用 16MB 的 RAM。一个非常可悲的限制,因为来自内部摄像头的图像比这更大。
  • 这不是由于应用到整个应用程序的限制,因为我尝试使用比单个 500x7500 图像使用更多的 RAM。并且 RAM 限制并不能解释为什么拆分成更小的部分是有效的(拆分的部分同时显示在同一个 ScrollViewer 中)。
  • 我相信 Windows Phone 7.1 中任何单个图像的限制是 2048x2048。我不明白为什么拆分会在 100 分之一上失败,但如果大小进一步减小,则可以工作。我的猜测与 BitBank 的思路相同,因为这取决于某处的内存或纹理缓冲区限制。
猜你喜欢
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
相关资源
最近更新 更多