2013-04-18 19 views
12

Yani, BitmapImage alır, ben de depolama için kaydetmek ve Base64'e (sunucuya göndermek için) dönüştürmek gerekir. Ancak, fileStream'dan memoryStream'a kopyalama başarılı olmaz. böylece sıfırlamak gerekir SaveJpeg() tarafından değiştirildi fileStream mevcut pozisyonundanfileStream.CopyTo (memoryStream) 'den sonra, memoryStream boş

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

cevap

15

Stream.CopyTo kopyaları;

var memoryStream = new MemoryStream(); 

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

Evet, yeterince iyi. –

İlgili konular