我用:
Dim bmi As New BitmapImage(New Uri(fiInfo.FullName, UriKind.Absolute))
bmi.CacheOption = BitmapCacheOption.OnLoad
这不使用 OnLoad 并且文件仍然被锁定以覆盖硬盘。知道怎么解锁吗?
问候
如您链接到的问题所示,您需要像这样调用 BeginInit 和 EndInit,并设置 UriSource 属性:
Dim bmi As New BitmapImage()
bmi.BeginInit()
bmi.CacheOption = BitmapCacheOption.OnLoad
bmi.UriSource = New Uri(fiInfo.FullName, UriKind.Absolute)
bmi.EndInit()
从文件中读取BitmapImage
并用以下内容重写它MemoryStream
:
MemoryStream ms = new MemoryStream();
BitmapImage bi = new BitmapImage();
byte[] bytArray = File.ReadAllBytes(@"test.jpg");
ms.Write(bytArray, 0, bytArray.Length);ms.Position = 0;
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
image.Source = bi;
我有一个类似的问题,我用这个方法解决了:(这是一个个性化的答案)
public static BitmapImage BitmapFromUri(Uri source)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = source;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
return bitmap;
}
您可以像这样打开图像:
BitmapImage bimg = BitmapFromUri(new Uri(some_URI));
并且它在加载后立即释放图像。
希望它能有所帮助!
BitmapFrame.Create(new Uri(filePath), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);