在 fileStream.CopyTo(memoryStream) 之后,memoryStream 为 null

本文关键字:memoryStream null 之后 CopyTo fileStream | 更新日期: 2023-09-27 18:09:44

所以,我有一个函数,它BitmapImage,我需要将其保存到 iso 存储并转换为 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);
}

在 fileStream.CopyTo(memoryStream) 之后,memoryStream 为 null

Stream.CopyTo

fileStream的当前位置复制副本,该位置已被 SaveJpeg() 更改,因此您需要重置它;

var memoryStream = new MemoryStream();
fileStream.Position = 0;
fileStream.CopyTo(memoryStream);