完全な URL からダウンロードする Silverlight コントロールを持っている場合Image
、別の Web 呼び出しを行わずに、ダウンロードした画像のサイズ (バイト単位) を取得するにはどうすればよいですか?
私に教えてくれる、Image
またはその背後にあるソースには何も見つかりません。BitmapImage
そしてDownloadProgress
、唯一のイベントでさえBitmapImage
パーセンテージを示します。
完全な URL からダウンロードする Silverlight コントロールを持っている場合Image
、別の Web 呼び出しを行わずに、ダウンロードした画像のサイズ (バイト単位) を取得するにはどうすればよいですか?
私に教えてくれる、Image
またはその背後にあるソースには何も見つかりません。BitmapImage
そしてDownloadProgress
、唯一のイベントでさえBitmapImage
パーセンテージを示します。
今まで気が付かなかったのですが、フレームの変なギャップですね…。
おそらく、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;
}
明らかに、フォームに既に画像コントロールがある場合は、新しいものを作成する必要はありません。または、作成したい場合は、何らかの親パネルに追加する必要があります...
〜クリス