私が使う:
Dim bmi As New BitmapImage(New Uri(fiInfo.FullName, UriKind.Absolute))
bmi.CacheOption = BitmapCacheOption.OnLoad
これはOnLoadを使用せず 、ファイルはハードディスク上で上書きするためにロックされたままです。ロックを解除する方法はありますか?
よろしく
私が使う:
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()
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;
私は同様の問題を抱えていて、この方法を使用して解決しました:(これはここでの回答のパーソナライズです)
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);