在Silverlight中获取下载图像的大小

时间:2009-11-13 22:38:17

标签: c# silverlight image bitmapimage

如果我有从完整网址下载的Silverlight Image控件,如何在不进行其他网络通话的情况下获取下载图像的大小(以字节为单位)?

我在其后面的ImageBitmapImage来源上找不到任何可以告诉我的内容。即使DownloadProgress上的BitmapImage事件也只提供了一个百分比。

1 个答案:

答案 0 :(得分:0)

我之前从未注意过,但这在框架中有点奇怪......

您可能必须使用WebClient对象自行下载图像。那会给你一个字节流。您可以检查流的长度,然后从流中创建位图。

设置Web客户端并开始下载的代码(注意,这是一个异步调用,因此我们在完成下载时分配一个事件处理程序。)

WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
Uri someImageUri = new Uri("http://www.somesite.com/someimage.jpg");
wc.OpenReadAsync(someImageUri);

以下是事件处理程序方法的示例:

   void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        System.IO.Stream imageStream = e.Result;
        long imageSize = imageStream.Length;
        BitmapImage bi = new BitmapImage();
        bi.SetSource(imageStream);
        Image image = new Image();
        image.Source = bi;
    }

显然,如果您的表单上已有图像控件,则无需创建新图像控件,或者如果您确实要创建它,则必须将其添加到某种父面板中...

〜克里斯