20

我用:

Dim bmi As New BitmapImage(New Uri(fiInfo.FullName, UriKind.Absolute))
bmi.CacheOption = BitmapCacheOption.OnLoad

这不使用 OnLoad 并且文件仍然被锁定以覆盖硬盘。知道怎么解锁吗?

问候

4

4 回答 4

40

如您链接到的问题所示,您需要像这样调用 BeginInit 和 EndInit,并设置 UriSource 属性:

Dim bmi As New BitmapImage()
bmi.BeginInit()
bmi.CacheOption = BitmapCacheOption.OnLoad
bmi.UriSource = New Uri(fiInfo.FullName, UriKind.Absolute)
bmi.EndInit()
于 2011-06-21T18:47:54.717 回答
9

从文件中读取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;
于 2011-06-21T18:49:25.950 回答
3

我有一个类似的问题,我用这个方法解决了:(这是一个个性化的答案

    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));

并且它在加载后立即释放图像。

希望它能有所帮助!

于 2014-09-15T12:33:49.803 回答
1
BitmapFrame.Create(new Uri(filePath), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
于 2014-09-04T12:25:38.977 回答