После fileStream.CopyTo(memoryStream), memoryStream имеет значение null

Итак, у меня есть функция, которая получает BitmapImage, мне нужно сохранить ее в iso storage и преобразовать в Base64 (для отправки на сервер). Однако копирование с fileStream на memoryStream не выполняется.

public void SetImage(BitmapImage bitmap)
{
    if (isoFiles.FileExists(Settings.FILE_AVATAR_JPG))
        isoFiles.DeleteFile(Settings.FILE_AVATAR_JPG);

    var fileStream = isoFiles.CreateFile(Settings.FILE_AVATAR_JPG);
    var wb = new WriteableBitmap(bitmap);
    wb.SaveJpeg(fileStream, 120, 120, 0, 85); // file is saved 

    var memoryStream = new MemoryStream();
    fileStream.CopyTo(memoryStream);          // here, memoryStream is null
    byte[] result = memoryStream.ToArray();
    fileStream.Close();

    var base64 = Convert.ToBase64String(result);
}

Ответ 1

Stream.CopyTo копирует текущую позицию fileStream, которая была изменена на SaveJpeg(), поэтому вам нужно reset it;

var memoryStream = new MemoryStream();

fileStream.Position = 0;
fileStream.CopyTo(memoryStream);