我正在使用此C#代码访问图像文件,以便从中读取元数据。
BitmapSource img = BitmapFrame.Create(uri);
不幸的是,uri
指定的图像文件在程序结束前会被锁定。如何防止图像被锁定?
答案 0 :(得分:8)
<强> 修改 强>
BitmapSource img = BitmapFrame.Create(uri,BitmapCreateOptions.None,BitmapCacheOption.OnLoad);
BitmapCreateOptions.None =默认选项
BitmapCacheOption.OnLoad =在加载时将整个图像缓存到内存中。所有对图像数据的请求都从内存存储器中填充。
来自here
答案 1 :(得分:3)
如果您希望之后能够立即删除/更改文件,请将整个文件读入内存,然后将其改为MemoryStream
。例如:
MemoryStream data = new MemoryStream(File.ReadAllBytes(file));
BitmapSource bitmap = BitmapFrame.Create(data);
答案 2 :(得分:0)
您还可以使用通用流:
Stream stream = File.OpenRead(filename);
Bitmap template = new Bitmap(stream); // or (Bitmap) Bitmap.FromStream(stream)
stream.Close();