このC#コードを使用して、画像ファイルにアクセスしてメタデータを読み取りました。プログラムが終了するまで.NET BitmapSourceがファイルをロックしています
BitmapSource img = BitmapFrame.Create(uri);
残念ながらuri
が指定した画像ファイルがロックされます。イメージがロックされないようにするにはどうすればよいですか?
このC#コードを使用して、画像ファイルにアクセスしてメタデータを読み取りました。プログラムが終了するまで.NET BitmapSourceがファイルをロックしています
BitmapSource img = BitmapFrame.Create(uri);
残念ながらuri
が指定した画像ファイルがロックされます。イメージがロックされないようにするにはどうすればよいですか?
編集
BitmapSource img = BitmapFrame.Create(uri,BitmapCreateOptions.None,BitmapCacheOption.OnLoad);
BitmapCreateOptions.None =デフォルトオプション
BitmapCacheOption.OnLoad =負荷時にメモリに画像全体をキャッシュします。画像データのすべての要求は、メモリストアから満たされます。あなたはまた、一般的なストリームを使用することができますhere
すぐにファイルを削除/変更できるようにするには、ファイル全体をメモリに読み込んでから、代わりにMemoryStream
を付けます。たとえば、
MemoryStream data = new MemoryStream(File.ReadAllBytes(file));
BitmapSource bitmap = BitmapFrame.Create(data);
から
:(VARストリーム= File.OpenRead())を使用して
Stream stream = File.OpenRead(filename);
Bitmap template = new Bitmap(stream); // or (Bitmap) Bitmap.FromStream(stream)
stream.Close();
は、より良い習慣です。誰かが知っている、新しいBitmap()が例外をスローするかもしれない。 –