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

Vit*_*nko 15 c# windows-phone-7

所以,我有这个功能,BitmapImage我需要将它保存到iso存储并转换为Base64(用于发送到服务器).然而,从复制fileStreammemoryStream没有成功.

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);
}
Run Code Online (Sandbox Code Playgroud)

Ale*_* K. 21

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

var memoryStream = new MemoryStream();

fileStream.Position = 0;
fileStream.CopyTo(memoryStream);  
Run Code Online (Sandbox Code Playgroud)