20 votes

BitmapImage dans WPF verrouille le fichier

J'utilise :

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

ce n'est pas le cas Utiliser OnLoad Et le fichier est toujours bloqué contre l'écrasement sur le disque dur. Une idée sur la manière de le déverrouiller ?

Salutations

41voto

CodeNaked Points 23538

Comme le montre la question à laquelle vous renvoyez, vous devez appeler BeginInit et EndInit, de la même manière, et définir la propriété UriSource :

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

9voto

Navid Rahmani Points 3816

Lire le BitmapImage du fichier et le réécrire avec un 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;

3voto

smukamuka Points 572

J'ai eu un problème similaire et je l'ai résolu en utilisant cette méthode : (il s'agit d'une personnalisation d'une réponse ici )

    public static BitmapImage BitmapFromUri(Uri source)
    {
        var bitmap = new BitmapImage();
        bitmap.BeginInit();
        bitmap.UriSource = source;
        bitmap.CacheOption = BitmapCacheOption.OnLoad;
        bitmap.EndInit();
        return bitmap;
    }

Vous pouvez ouvrir l'image comme suit :

BitmapImage bimg = BitmapFromUri(new Uri(some_URI));

Et il libère l'image immédiatement après l'avoir chargée.

J'espère que cela pourra vous aider !

1voto

Andreas Points 468
BitmapFrame.Create(new Uri(filePath), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X