BitmapImage в WPF блокирует файл
Я использую:
Dim bmi As New BitmapImage(New Uri(fiInfo.FullName, UriKind.Absolute))
bmi.CacheOption = BitmapCacheOption.OnLoad
это не Использовать OnLoad И файл по-прежнему заблокирован для перезаписи на жестком диске. Есть идеи, как разблокировать?
в отношении
4 ответов
как показано в вопросе, на который вы ссылаетесь, вам нужно вызвать 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));
и он немедленно освобождает изображение после его загрузки.
надеюсь, что это помогает!