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

fromファイルを読み取り、: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 に答える