2009-05-01 79 views
2

我正在使用此C#代碼來訪問圖像文件以便從中讀取元數據。.NET BitmapSource鎖定文件

BitmapSource img = BitmapFrame.Create(uri); 

不幸的是由uri指定的圖像文件被鎖定,直到程序結束。如何防止圖像被鎖定?

回答

8

也許this could help

編輯

BitmapSource img = BitmapFrame.Create(uri,BitmapCreateOptions.None,BitmapCacheOption.OnLoad); 

BitmapCreateOptions.None =默認選項

BitmapCacheOption.OnLoad =高速緩存中的整個圖像劃分成存儲器在加載時間。圖像數據的所有請求都從內存存儲中填充。

here

3

如果您希望以後能夠立即刪除/更改文件,請將整個文件讀入內存,然後替換爲MemoryStream。例如:

MemoryStream data = new MemoryStream(File.ReadAllBytes(file)); 
BitmapSource bitmap = BitmapFrame.Create(data); 
0

您還可以使用通用流:

Stream stream = File.OpenRead(filename); 
Bitmap template = new Bitmap(stream); // or (Bitmap) Bitmap.FromStream(stream) 
stream.Close(); 
+0

使用(VAR流= File.OpenRead())是一個更好的做法。誰知道,也許新的Bitmap()會引發異常。 – 2011-12-09 09:15:56