私は開いた一時画像ファイルを持っています
Bitmap CapturedImg = (Bitmap)Image.FromFile("Item/Item.bmp");
一時的であるため、さらに使用するために別の画像に置き換えたいのですが、プログラムはまだその画像を使用しており、何もできません。
交換するために画像から手放すにはどうすればよいですか?
MSDNから
イメージが破棄されるまで、ファイルはロックされたままになります。
代わりにファイル ストリームからイメージを読み取る
using( FileStream stream = new FileStream( path, FileMode.Open, FileAccess.Read ) )
{
image = Image.FromStream( stream );
}
ファイルが非同期コードによって上書きされたため、同様の問題があり、使用できませんでした。ビットマップのコピーを作成し、元のビットマップを解放することで問題を解決しました。
Bitmap tmpBmp = new Bitmap(fullfilename);
Bitmap image= new Bitmap(tmpBmp);
tmpBmp.Dispose();
この構文を使用してみてください
using (Bitmap bmp = (Bitmap)Image.FromFile("Item/Item.bmp"))
{
// Do here everything you need with the image
}
// Exiting the block, image will be disposed
// so you should be free to delete or replace it
using (var stream = System.IO.File.OpenRead("Item\Item.bmp"))
{
var image= (Bitmap)System.Drawing.Image.FromStream(stream)
}