Загрузка изображения из SharePoint снижает качество изображения - PullRequest
0 голосов
/ 03 июля 2018

Я синхронизирую изображения из профиля пользователя 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(&quot;/home/PDSPortal/api/Profile/Image?email=XYZ.ABC-LMN@am.jll.com&quot;);">
            <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...