ロード後に画像ファイルを解放するには、BitmapCacheOption.OnLoad
フラグを設定して画像を作成する必要があります。これを行う1つの方法は次のとおりです。
string filename = ...
BitmapImage image = new BitmapImage();
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = new Uri(filename);
image.EndInit();
設定BitmapCacheOption.OnLoad
は、ローカル ファイル Uri から読み込まれた BitmapImage で機能しますが、これはどこにも文書化されていません。したがって、おそらくより安全な方法は、次のStreamSource
代わりにプロパティを設定して、FileStream からイメージをロードすることですUriSource
。
string filename = ...
BitmapImage image = new BitmapImage();
using (var stream = File.OpenRead(filename))
{
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = stream;
image.EndInit();
}