完全な 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;
}
明らかに、フォームに既に画像コントロールがある場合は、新しいものを作成する必要はありません。または、作成したい場合は、何らかの親パネルに追加する必要があります...
〜クリス