簡體   English   中英

WPF中的BitmapImage會鎖定文件

[英]BitmapImage in WPF does lock file

我用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM