简体   繁体   English

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

[英]After fileStream.CopyTo(memoryStream), memoryStream is null

So, I have the function, which gets BitmapImage , I need to save it to iso storage and convert to Base64 (for sending to server). 所以,我有函数,它获取BitmapImage ,我需要将它保存到iso存储并转换为Base64(用于发送到服务器)。 However, copying from fileStream to memoryStream is not successful. 但是,从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);
}

Stream.CopyTo copies from the current position of fileStream which has been changed by SaveJpeg() so you need to reset it; Stream.CopyTofileStream的当前位置复制,该位置已被SaveJpeg()更改,因此您需要重置它;

var memoryStream = new MemoryStream();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM