我正在开发通用 Windows 应用程序,在我当前的项目中,我使用统一通信 Web API (UCWA) 来显示 Skype 用户状态,它工作正常,但是当我当时试图显示 Skype 用户照片时,我被卡住了。
我按照以下链接显示照片 https://msdn.microsoft.com/en-us/skype/ucwa/getmyphoto
我的 GET 请求的响应代码为 200 OK,但我不知道如何从我的响应中显示图像。
请告诉我如何解决它。
-普拉迪普
我正在开发通用 Windows 应用程序,在我当前的项目中,我使用统一通信 Web API (UCWA) 来显示 Skype 用户状态,它工作正常,但是当我当时试图显示 Skype 用户照片时,我被卡住了。
我按照以下链接显示照片 https://msdn.microsoft.com/en-us/skype/ucwa/getmyphoto
我的 GET 请求的响应代码为 200 OK,但我不知道如何从我的响应中显示图像。
请告诉我如何解决它。
-普拉迪普
我得到了结果,在获得 HTTP 响应之后,我使用下面的行将这些响应内容转换为流类型。
var presenceJsonStr = await httpResponseMessage.Content.ReadAsStreamAsync();
这是显示图像的代码
var photo = await AuthenticationHelper.Photo();
// Create a .NET memory stream.
var memStream = new MemoryStream();
// Convert the stream to the memory stream, because a memory stream supports seeking.
await photo.CopyToAsync(memStream);
// Set the start position.
memStream.Position = 0;
// Create a new bitmap image.
var bitmap = new BitmapImage();
// Set the bitmap source to the stream, which is converted to a IRandomAccessStream.
bitmap.SetSource(memStream.AsRandomAccessStream());
// Set the image control source to the bitmap.
imagePreivew.ImageSource = bitmap;
假设您放置了一个指定图像类型的 Accept 标头,您应该能够查看 Content-Length 标头以确定用户是否在服务器上设置了图像。如果长度为零,您应该考虑提供要显示的默认图像。如果没有,我建议您查看在 UWP 平台中将位图图像转换为字节数组和反之亦然,因为您应该将响应正文视为一个字节数组,其长度由 Content-Length 标头定义。
如果由于某种原因没有提供 Accept 标头,则响应正文不是 image/* 类型,并且看起来像字符串,那么您可能正在处理 Base64 编码的图像。这种情况应该不太可能处理,但如果您需要建议,我建议您查看在Windows Runtime 中的 Reading and Writing Base64。
您可以直接使用为用户照片资源生成的 URL。只需将图片的 URL 设置为 Image 容器的来源即可。您的应用程序会自动加载它。