在Windows Phone 7的C#中将字节[]转换为图像类型

Jos*_*tle 3 c# silverlight xaml image windows-phone-7

我在将Byte数组转换为Image类型以便在Windows Phone 7上的应用程序中显示时遇到问题.

从服务器检索数据,当我上传和下载数据时,它工作正常,但在将其转换回图像格式时我很挣扎.

任何人都可以为我解释这个问题吗?

这是我将Byte数组转换为BitmapImage的方法,

public BitmapImage decodeImage(byte[] array)
{
    MemoryStream ms = new MemoryStream(array, 0, array.Length);

    // Convert byte[] to Image
    ms.Write(array, 0, array.Length);

    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.SetSource(ms);

    return bitmapImage;
}    
Run Code Online (Sandbox Code Playgroud)

然后这是我尝试将返回的BitmapImage设置为我在XAML UI中使用的Image框的源的代码.

BitmapImage usrIMG = new BitmapImage();
usrIMG = getJson.decodeImage(userProfile.Photos[0].Image);
profileImage.Source = usrIMG;
Run Code Online (Sandbox Code Playgroud)

我知道代码看起来很混乱,我宣称我不需要的东西,我已经摆弄它多年了,我完全不知所措.

非常感谢

Ste*_*SFT 8

以下代码适用于我对使用PhotoChooserTask的场景的快速测试,并将所选图像存储在字节数组中.您还可能希望查看存储和检索侧面字节数组的代码,以确保不会丢失任何内容.

private byte[] imageBytes;
private void GetPhoto_Click(object sender, RoutedEventArgs e)
{
    PhotoChooserTask photoTask = new PhotoChooserTask();
    photoTask.Completed += new EventHandler<PhotoResult>(photoTask_Completed);
    photoTask.Show();
}

void photoTask_Completed(object sender, PhotoResult e)
{
    imageBytes = new byte[e.ChosenPhoto.Length];
    e.ChosenPhoto.Read(imageBytes, 0, imageBytes.Length);

    // save 'imageBytes' byte array to data base ...
}

private void ShowPhoto_Click(object sender, RoutedEventArgs e)
{
    // load 'imageBytes' byte array to data base ...
    BitmapImage bitmapImage = new BitmapImage();
    MemoryStream ms = new MemoryStream(imageBytes);
    bitmapImage.SetSource(ms);
    myImageElement.Source = bitmapImage;
}
Run Code Online (Sandbox Code Playgroud)