Я получаю доступ к изображению из хранилища blob на моей службе azure. Я возвращаю uri
для изображения, а затем использует HttpClient, чтобы попробовать его загрузить. uri
проверяется правильность.Преобразование файла WriteableBitmap ToArray в UWP
using (HttpClient client = new HttpClient())
{
try
{
HttpResponseMessage response = await client.GetAsync(new Uri(((App)Application.Current).results.statsInformation.ImageBlob.ImageUri, UriKind.RelativeOrAbsolute));
if (response != null && response.StatusCode == HttpStatusCode.OK)
{
using (var stream = await response.Content.ReadAsStreamAsync())
{
using (var memStream = new MemoryStream())
{
await stream.CopyToAsync(memStream);
memStream.Position = 0;
memStream.Seek(0, SeekOrigin.Begin);
myOnlineImage.SetSource(memStream.AsRandomAccessStream());
}
}
}
}
catch (Exception)
{
throw;
}
}
Изображение с сервера хранится в переменной myOnlineImage
. Затем я хочу извлечь информацию о пикселях, используя myOnlineImage.PixelBuffer.ToArray();
. Это потому, что изображение не было загружено правильно? Может ли кто-нибудь помочь мне с вариантами решения этого?
Исключение, я получаю это:
Исключение
Сообщение "Значение не может быть пустым \ г \ nParameter имя: источник"
StackTrace "в System.Runtime .InteropServices.Marshal.CopyToManaged (источник IntPtr, назначение объекта, Int32 startIndex, длина Int32) \ r \ n в System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.CopyTo (источник IBuffer, UInt32 sourceIndex, Byte [] destination, Int32 destinationIndex, Int32 count) \ r \ n в System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.ToArray (источник IBuffer, UInt32 sourceIndex, количество Int32) \ r \ n в System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions.ToArray (источник IBuffer) \ г \ п на Stonegaard_endless_runner.MainPage.d__7.MoveNext()»
Extra
Я проверил, что у меня есть доступ потоков к изображению.
Изображение не является файлом, а с сервера или из другого BitmapImage. Любые изменения, которые вы знаете, как их преобразовать, чтобы проверить свой код? – JTIM
@JTIM Заменив использование файла ожидания на: using (Stream stream = await (response.Content.ReadAsStreamAsync())) {using (IRandomAccessStream strm = stream.AsRandomAccessStream()) {... –
Он зависает, когда выполняется строка 'bi.SetSource (strm)'. После этого ничего не происходит? – JTIM