【问题标题】:Sending an Image from WP7 to WCF and converting to Bitmap将图像从 WP7 发送到 WCF 并转换为位图
【发布时间】:2012-07-09 11:23:12
【问题描述】:

我正在尝试将图片从我的 Windows Phone 发送到需要 System.Drawing.Bitmap 的 WCF 服务。但是,我无法从手机中获取 BitmapImage,并在 WCF 服务上获取 Bitmap。我在 C# 中执行此操作。

我尝试将 BitmapImage 制作为 byte[],通过 WCF 发送,然后将其转换回 BitmapImage,然后将其转换为 Bitmap。我可以得到BitmapImage的大小,但是图像中的数据是空的。任何可能出错的线索?

我该怎么做?

【问题讨论】:

  • 在线位图的序列化和反序列化过程中似乎存在问题。我建议您尝试其他格式的图像,看看它是否有效。试试jpg
  • 那么我将如何发送 jpg? - 序列化文件流?以及如何在另一端反序列化它,以便最终获得位图?
  • 它是基于 SOAP 的服务还是 REST?
  • 我使用的是普通的 basicHttpBinding,所以我想我使用的是 SOAP。当我从普通的 WPF 客户端发送图片时,它工作正常,虽然这个客户端不使用 BitmapImage,而只是使用 Bitmap。
  • 既然您使用的是 SOAP,我认为发送字节数组应该不会有任何问题。值得检查您的代码以确保您遗漏了一些东西。另外你可能想看看stackoverflow.com/questions/4732807/…

标签: c# wcf windows-phone-7 bitmap bitmapimage


【解决方案1】:

问题可能出在maxReceivedMessageSize 上。你说你可以得到 BitmapImage 的大小,但它是正确的大小吗?如果没有,则在 WCF 的 web.config 中添加以下行:

<bindings>
  <wsHttpBinding>
    <binding name="wsHttp"
                 maxReceivedMessageSize ="50000000"
                 messageEncoding="Mtom"
                 maxBufferPoolSize="50000000" >
      <readerQuotas maxDepth="32"
         maxStringContentLength="2147483647"
         maxArrayLength="2147483647"
         maxBytesPerRead="8192"
         maxNameTableCharCount="2147483647" />
    </binding>
  </wsHttpBinding>
</bindings>

现在再试一次,现在应该可以了。

【讨论】:

  • 我正在使用 basicHttpBinding,因为 WP7 不支持 wsHttpBinding,是的。字节数组与手机上的大小相同。似乎我错过了手机的底层流,但我不知道如何获取这个流。此外,我已经在 WCF 的 web.config 中增加了这些数字,所以我认为这不是问题。
猜你喜欢
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
相关资源
最近更新 更多