为什么图像的流媒体源不起作用?

Tho*_*air 7 c# wpf image stream

我使用以下代码来流式传输图像源:

        BitmapImage Art3 = new BitmapImage();
        using (FileStream stream = File.OpenRead("c:\\temp\\Album.jpg"))
        {
            Art3.BeginInit();
            Art3.StreamSource = stream;
            Art3.EndInit();
        }
        artwork.Source = Art3;
Run Code Online (Sandbox Code Playgroud)

"artwork"是应该显示图像的XAML对象.该代码不应该锁定图像,它不会将其锁定好,但也不显示它,默认图像变为"无"......我的猜测是我没有正确使用流,并且我的图像变为空.救命?

更新:

我现在使用以下代码,朋友向我建议:

        BitmapImage Art3 = new BitmapImage();

        FileStream f = File.OpenRead("c:\\temp\\Album.jpg");

        MemoryStream ms = new MemoryStream();
        f.CopyTo(ms);
        f.Close();

        Art3.BeginInit();
        Art3.StreamSource = ms;
        Art3.EndInit();   

        artwork.Source = Art3;
Run Code Online (Sandbox Code Playgroud)

由于某些奇怪的原因,此代码返回以下错误:

图像无法解码.图像标头可能已损坏.

我究竟做错了什么?我确信我试图加载的图像没有损坏.

Tho*_*air 11

我设法通过使用以下代码解决问题:

        BitmapImage Art3 = new BitmapImage();

        FileStream f = File.OpenRead("c:\\temp\\Album.jpg");

        MemoryStream ms = new MemoryStream();
        f.CopyTo(ms);
        ms.Seek(0, SeekOrigin.Begin);
        f.Close();

        Art3.BeginInit();
        Art3.StreamSource = ms;
        Art3.EndInit();   

        artwork.Source = Art3; 
Run Code Online (Sandbox Code Playgroud)

谢谢所有试图帮助我的人!


Iva*_*rić 0

你有没有尝试过:

        BitmapImage Art3 = new BitmapImage();
        using (FileStream stream = File.OpenRead("c:\\temp\\Album.jpg"))
        {
            Art3.BeginInit();
            Art3.StreamSource = stream;
            stream.Flush();
            Art3.EndInit();
        }
        artwork.Source = Art3;
Run Code Online (Sandbox Code Playgroud)