我正在使用此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);
您還可以使用通用流:
Stream stream = File.OpenRead(filename);
Bitmap template = new Bitmap(stream); // or (Bitmap) Bitmap.FromStream(stream)
stream.Close();
使用(VAR流= File.OpenRead())是一個更好的做法。誰知道,也許新的Bitmap()會引發異常。 – 2011-12-09 09:15:56