Я синхронизирую изображения из профиля пользователя SharePoint и сохраняю их в БД. Изображение сохраняется в БД как VarBinary (MAX). Изображение в SharePoint выглядит довольно четко. После сохранения в БД мы показываем сообщения в нашем веб-приложении. Проблема в том, что, хотя изображение профиля SharePoint очень четкое, изображение веб-приложения размыто.
Любые предложения о том, как мы могли бы улучшить качество сообщения (например, уменьшить размытие)?
Ниже показано, как мы получаем изображение из SharePoint: -
private byte[] GetImageData(ClientContext context, string pictureUrl)
{
//if (this.fedauthCookieContainer == null)
//{
Uri webUri = new Uri(pictureUrl);
var authCookie = this.GetCredentials().GetAuthenticationCookie(webUri);
var fedAuthString = authCookie.TrimStart("SPOIDCRL=".ToCharArray());
var cookieContainer = new CookieContainer();
cookieContainer.Add(webUri, new Cookie("SPOIDCRL", fedAuthString));
this.fedauthCookieContainer = cookieContainer;
//}
using (HttpClientHandler handler = new HttpClientHandler())
{
handler.CookieContainer = this.fedauthCookieContainer;
using (HttpClient client = new HttpClient(handler))
{
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
//client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
return client.GetByteArrayAsync(pictureUrl).Result;
}
}
}
Затем, после сохранения изображения из SharePoint в нашей БД, мы показываем его в нашем веб-приложении. Следующий код показывает, как мы берем изображение из БД.
[HttpGet]
public async Task<HttpResponseMessage> Image(string email)
{
string mediaType = "image/jpeg";
HttpResponseMessage file = this.File(this.GetDefaultHeadshotImage(), mediaType);
var imageData = await this.profileService.GetProfileImage(email);
if (imageData != null)
{
file = this.File(imageData, mediaType);
}
return file;
}
Вот как мы показываем изображение в нашем веб-приложении: -
<div class="widget-profile-user-image" data-bind="style: { backgroundImage: 'url(\'' + imageUrl() + '\')' }" style="background-image: url("/home/PDSPortal/api/Profile/Image?email=XYZ.ABC-LMN@am.jll.com");">
<div class="widget-profile-achieverStatus" data-bind="css: achieverStatusCss, visible: achieverStatus() != 'None'" style="display: none;">
<div class="text" data-bind="text: achieverStatus">None</div>
<div class="arrow"></div>
</div>
</div>