を使用することもできますMemoryStream
が、ビットマップ データの 2 つの別々のコピーが RAM に保持されるため、実際にはメモリを浪費しますMemoryStream
。この方法で使用する場合のもう 1 つの問題MemoryStream
は、キャッシュをバイパスすることです。
これを行う最善の方法は、BitmapCacheOptions.OnLoad を使用してファイルから直接読み取ることです。
path = @"c:\somePath\somePic.jpg"
var source = new BitmapImage();
source.BeginInit();
source.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
source.CacheOption = BitmapCacheOption.OnLoad;
source.EndInit(); // Required for full initialization to complete at this time
var img = new System.Windows.Controls.Image { Source = source };
このソリューションも効率的でシンプルです。
注: たとえば、イメージがディスク上で変更されている可能性があるなどの理由で、実際にキャッシュをバイパスしたい場合は、 も設定する必要がありますCreateOption = BitmapCreateOption.IgnoreImageCache
。MemoryStream
ただし、その場合でも、このソリューションは RAM にイメージ データの 2 つのコピーを保持しないため、ソリューションよりも優れています。