Отображение изображения из хранилища Azure перед загрузкой - C # - PullRequest
0 голосов
/ 02 июля 2018

Я пишу программу, которая позволит пользователю загружать выбранные изображения из хранилища BLOB-объектов Azure.

У меня это работает, однако в настоящее время изображения загружаются в файл, а затем этот путь к файлу используется для отображения изображений. Я хочу, чтобы изображения отображались, а затем разрешил пользователю выбирать, какие изображения можно загружать.

Ниже приведен мой код для загрузки изображений.

for (int i = 1; i<=dira.ListBlobs().Count(); i++)
{
     try
     {
          CloudBlob blob = dira.GetBlobReference(i + ".png");
          blob.DownloadToFile(localFilePath + "/" + i.ToString() + ".png", FileMode.Create);
          // MessageBox.Show(i.ToString());
      }
      catch (StorageException ex)
      {
      }
}

Тогда мой код для отображения загруженного изображения здесь:

pictureBox1.BackgroundImage= Image.FromFile(filePath + ".png");

Как бы я отобразил изображения до их загрузки?

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Как вы сказали выше, мы можем загрузить их в память.

Вот простой код для вашей справки:

 CloudBlob blob = dira.GetBlobReference(i + ".png");
 MemoryStream memoryStream = new MemoryStream();
 blob.DownloadToStream(memoryStream);
 pictureBox1.BackgroundImage = System.Drawing.Image.FromStream(memoryStream);
0 голосов
/ 03 июля 2018

Если вы действительно хотите сэкономить сетевой трафик (или время загрузки) между ПК и хранилищем BLOB-объектов, все, что вам нужно сделать, это создать миниатюру в Azure .

Я нашел очень хороший и полный пример , как это сделать . Механизм довольно аккуратный и «облачный»

Thumbnail in cloud

Пожалуйста, имейте в виду, что выше может поднять ваш счет Azure. Как и в других случаях, в этом случае вы должны учитывать свои приоритеты:

  • Мне нужно быть очень быстрым и сохранять сеть для своих пользователей -> создавать эскизы в Azure

  • Я хочу сэкономить на моей стороне, и производительность не имеет значения -> загрузить полноразмерное изображение и создать миниатюру на хосте

0 голосов
/ 03 июля 2018

Вы не можете показывать изображения без загрузки

Но вместо этого

Вы должны создать миниатюру изображения с вашим фактическим изображением, чтобы при отображении списка пользователю вы могли загружать миниатюры с сервера, а затем фактические изображения по выбору пользователя

Вы можете создать миниатюру, используя код ниже

    public static System.Drawing.Bitmap ResizeImage(System.Drawing.Image image, int width, int height) 
    { 
        //a holder for the result 
        Bitmap result = new Bitmap(width, height); 

        //use a graphics object to draw the resized image into the bitmap 
        using (Graphics graphics = Graphics.FromImage(result)) 
        { 
            //set the resize quality modes to high quality 
            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; 
            graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
            graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 
            //draw the image into the target bitmap 
            graphics.DrawImage(image, 0, 0, result.Width, result.Height); 
        } 

        //return the resulting bitmap 
        return result; 
    } 

Ссылка: - C # Создание эскиза

...