MemoryStream错误将base64string转换为bitmapimage

时间:2014-03-09 06:07:26

标签: c# visual-studio-2012 windows-8 windows-store-apps

我正在尝试将base64string转换为Bitmapimage。 下面的代码用于我的Windows Phone项目,它工作正常,但我在我的Windows应用商店项目中重用此代码并收到此错误。我不知道修复这个错误。

错误消息:

  

'Windows.UI.Xaml.Media.Imaging.BitmapSource.SetSource(Windows.Storage.Streams.IRandomAccessStream)'的最佳重载方法匹配有一些无效的参数

     

无法从'System.IO.MemoryStream'转换为'Windows.Storage.Streams.IRandomAccessStream'

DATADB.cs

class DATADB
{
    public class NewsObject
    {
        BitmapImage thumb = null;

        public BitmapImage Thumb { 
            get {
                if (thumb==null)
                {
                    Regex rgx = new Regex("^[^,]*,");
                    thumb = Utilities.base64image(rgx.Replace(this.default_photo, ""));
                }
                return thumb;
            }
        }

        public string date { get; set; }
        public string id { get; set; }
        public string info { get; set; }
    }
}

Utilities.cs

class Utilities
{
    public static BitmapImage base64image(string base64string)
    {
        if (base64string == "" || base64string == null) return null;

        byte[] fileBytes = Convert.FromBase64String(base64string);

        using (MemoryStream ms = new MemoryStream(fileBytes, 0, fileBytes.Length))
        {
            ms.Write(fileBytes, 0, fileBytes.Length);
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.SetSource(ms); //Getting error message here.
            return bitmapImage;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

尝试使用InMemoryRandomAccessStream代替MemoryStream

答案 1 :(得分:0)

尝试使用

bitmapImage.SetSource(new MemoryRandomAccessStream(ms));

而不是

bitmapImage.SetSource(ms);