Могу ли я преобразовать растровое изображение в формат JPEG при сохранении растрового изображения в поток памяти? - PullRequest
0 голосов
/ 06 сентября 2018

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

Но когда я выполняю следующий код, файл загружается, но он не преобразовал точечный рисунок правильно. Если я просматриваю файл, программа просмотра отображает «Неверное изображение».

Я где-то читал, что растровые изображения не могут быть преобразованы в JPEG в памяти. Может ли это быть тем, что здесь происходит?

        // Retrieve reference to a blob
        var blobContainer = GetBlobContainer(Properties.Settings.Default.BlobContainerName);
        var blob = blobContainer.GetBlockBlobReference(blobFilePath);

        // Save bitmap to jpeg in MemoryStream, then upload to Azure blob
        //var writer = new StreamWriter(blob.OpenWrite());
        MemoryStream memStr = new MemoryStream();
        bitmap.Save(memStr, System.Drawing.Imaging.ImageFormat.Jpeg);
        blob.UploadFromStream(memStr);

1 Ответ

0 голосов
/ 06 сентября 2018

После записи в MemoryStream вам необходимо «перемотать» его, установив memStr.Position = 0 перед любыми попытками его чтения (в вашем случае, загрузкой в ​​Azure)

"Будьте добры, пожалуйста, перемотайте."

...