Я пытаюсь загрузить файл большого двоичного изображения из моего хранилища Azure в переменную MemoryStream и декодировать его для создания растрового изображения. Однако при декодировании потока изображение не появляется.
Я попытался использовать оператор using с помощью MemoryStream и загрузить файл изображения в переменную потока в операторе using. Я попробовал решения по этим двум ссылкам: Как отобразить изображение BLOB-объекта в Android? и Как загрузить файл BLOB-объекта в поток памяти? . Я вставил контрольные точки для проверки stream
, а длина и позиция 2574958
, а емкость - 4123264
. Итак, я верю, что получаю данные потока обратно.
private async void GetBlob()
{
List<string> imageNames = SQL.GetImageNames(SelectedRego);
foreach (string imageName in imageNames)
{
using (var stream = new MemoryStream())
{
Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob cloudBlockBlob = Blob.DownloadBlob(imageName);
await cloudBlockBlob.DownloadToStreamAsync(stream);
ImageView imageView = new ImageView(this);
imageView.SetImageBitmap(BitmapFactory.DecodeStream(stream));
FindViewById<LinearLayout>(Resource.Id.maintenance_history_image_linear_layout).AddView(imageView);
}
}
}
}
public static CloudBlockBlob DownloadBlob(string imageName)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudStorageAccountCredentials);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("images");
container.CreateIfNotExistsAsync();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(imageName);
return blockBlob;
}
Я ожидаю, что данные потока будут декодированы в объект Bitmap для отображения в моем приложении, как показано imageView.SetImageBitmap(BitmapFactory.DecodeStream(stream));
.