Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字节加载图像会导致AG_E_网络错误_C#_Silverlight_Bitmap - Fatal编程技术网

C# 从字节加载图像会导致AG_E_网络错误

C# 从字节加载图像会导致AG_E_网络错误,c#,silverlight,bitmap,C#,Silverlight,Bitmap,我正在为我们的Silverlight应用程序编写自己的缓存,以解决任何大小问题。 缓存工作正常,但是,它不适用于图像。 我把问题缩小到一个小测试应用程序,它将BitmapImage转换为字节(模拟从缓存中读取),然后将这些字节转换回图像 代码如下: public MainPage() { InitializeComponent(); firstImage.ImageOpened += first_Loaded; } void first_Loaded(object sender

我正在为我们的Silverlight应用程序编写自己的缓存,以解决任何大小问题。 缓存工作正常,但是,它不适用于图像。 我把问题缩小到一个小测试应用程序,它将BitmapImage转换为字节(模拟从缓存中读取),然后将这些字节转换回图像

代码如下:

public MainPage()
{
    InitializeComponent();
    firstImage.ImageOpened += first_Loaded;
}

void first_Loaded(object sender, RoutedEventArgs e)
{
    var bmp = firstImage.Source;
    var bytes = ToByteArray(bmp as BitmapImage);
    otherImage.Source = CreateImageFromBytes(bytes);
}



private byte[] ToByteArray(BitmapImage bi)
{
    var enc = new BitmapEncoder(bi);
    return enc.GetBitmapData();
}

private BitmapImage CreateImageFromBytes(byte[] data)
{
    var bitmapImage = new BitmapImage();
    bitmapImage.ImageFailed += bitmapImage_ImageFailed;
    var ms = new MemoryStream(data);
    bitmapImage.SetSource(ms);
    return bitmapImage;
}

void bitmapImage_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
    Console.WriteLine(e.ErrorException.Message);
}
ImageFailed事件始终以消息“AG_E_NETWORK_ERROR”引发 我读了一些关于这个问题的文章,似乎与图像的来源不同有关,但我肯定能够从内存中的字节加载图像,对吗

有什么办法可以解决这个问题吗


我应该补充一点,转换为字节的工作正常,因为如果我将这些字节保存到磁盘,我可以打开图像。

来自Silverlight中的备注:

BitmapImage可用于引用JPEG和PNG格式中的图像 文件格式

不幸的是,您使用的
位图编码器
类似乎以BMP格式编码位图。因此,
BitmapImage
无法解码编码的缓冲区


您必须找到BitmapEncoder的另一个实现,它能够对JPEG或PNG进行编码。

BitmapEncoder
类来自何处?好了,Silverlight中没有类似的东西。不过,这是因为保存位起作用,我在尝试读取字节时出错。谢谢欢迎对编码器提出任何建议。