2013-04-18 23 views
12

だから、私はBitmapImageを取得する関数を持っています、私はisoストレージにそれを保存し、(サーバーに送信するために)Base64に変換する必要があります。ただし、fileStreamからmemoryStreamへのコピーは成功しません。そう、あなたがそれをリセットする必要がSaveJpeg()によって変更されたfileStreamの現在位置からfileStream.CopyTo(memoryStream)の後、memoryStreamはnull

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); 
} 

答えて

15

Stream.CopyToコピー。

var memoryStream = new MemoryStream(); 

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

ええ、十分です。 –

関連する問題