Suppression d'image

Résolu
Utilisateur anonyme - 5 avril 2006 à 13:27
 Utilisateur anonyme - 7 avril 2006 à 03:59
Bonjour,



Mon probleme est de supprimer une image, pour cela j'ai essaye trois methodes toutes aussi infructueuses, les voici :



File.Delete(@"C:\TEMP\old1.bmp");



Puis :



File.Move(@"C:\TEMP\new1.bmp",@"C:\TEMP\old1.bmp");



Et ensuite :



System.Drawing.Image Old = Bitmap.FromFile(@"C:\TEMP\old1.bmp");

Old.Dispose();

System.Drawing.Image New = Bitmap.FromFile(@"C:\TEMP\new1.bmp");

New.Save(@"C:\CAIRO\TEMP\old1.bmp");



J'ai aussi essaye de mixer la 1ere avec la trois pour essayer de
"disposer" l'image old, au passage, voila comment sont ouvertes les
images :



Bitmap newPic1 = new Bitmap(@"C:\TEMP\new1.bmp");

Bitmap oldPic1 = new Bitmap(@"C:\TEMP\old1.bmp");



Je ne sais plus trop quoi essayer, n'auriez vous pas une idee voire meme une solution ? Je suis preneur

8 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 avril 2006 à 10:35
Voilà ce que dit la doc de Image.FromFile "Le fichier reste verrouillé tant que image n'a pas été supprimé." à mons avis tu as oublié d'appeler Dispose pour un image, ( dans une fonction, une ré-allocation ou quelque chose comme ça ) du coup elle existe encore en mémoire, tant que le garbage collector n'est pas passé. Au pire avec un GC.Collect avant File.Delete ça devrait marcher.
3
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
5 avril 2006 à 13:52
salut

Normalement la methode File.Delete(cheminFichier); marche parfaitement ... apres, il faut que tu verifie si tu as bien les droits nécéssaire sur ce fichier ...

Pour mon cas j'ai utiliser cette méthode de nombreuses fois et je n'ai jamais eu de probleme

Bonne journée
0
Utilisateur anonyme
5 avril 2006 à 14:05
The process cannot access the file "old1.bmp" because it is being used by another process.



J'ai eu ce probleme entre autre, c'est pour cela que j'avais fait appel Old.Dispose()
qui ne semblait pas fonctionner. Visiblement, je ne suis pas le seul a
avoir rencontrer des difficultes pour utiliser cette methode puisque
d'autres messages du forum s'y rapportent sans toutefois apporter la
solution a mon probleme.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 avril 2006 à 05:13
Salut utilises tu une PictureBox ou un autre contrôle qui maintient l'image ? Si c'est le cas avant d'appeler File.Delete utilises ses deux lignes de code :

myPictureBox.Image.Dispose( );
myPictureBox.Image = null;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 avril 2006 à 08:46
Salut Lutinore,



J'ai vu que tu comprenais mon probleme mais justement, les images qui
sont traites ne sont contenus dans aucun controle, elles sont juste sur
le disque dur.

En fait dans mon programme, je cree une premiere image que j'enregistre
(new1.bmp), je la compare a l'ancienne (old1.bmp), si les differences
entre les deux images depassent un certain seuil, j'enregistre
new1.bmp. Dans tous les cas, a la fin, j'enregistre new1.bmp comme
etant la nouvelle old1.bmp. C'est lors de cette derniere operation que
je dois effacer old1.bmp et qu'il me fait une erreur.



Je precise que je fais cela pour faire de la detection de mouvements.
Si vous avez une idee du pourquoi de l'erreur ou d'une autre facon de
proceder, je vous en serais tres reconnaissant.
0
Utilisateur anonyme
6 avril 2006 à 11:17
Merci bien pour ces informations, l'erreur que j'ai faite ne peut etre
que celle que tu dis malheureusement je ne vois vraiment ou j'ai pu
oublier d'appeler Dispose().



J'ai essaye avec un GC.Collect dont je ne connaissais pas l'existence
(premier vrai programme en C# oblige nombre de decouvertes) neanmoins,
cela ne semble pas fonctionner alors que j'ai fait un GC.Collect().



Je vais me replonger dans mon code pour voir d'ou peut venir mon erreur, merci encore pour ces precieuses informations.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 avril 2006 à 11:38
Montres le code qui pose problème si tu veux.
0
Utilisateur anonyme
7 avril 2006 à 03:59
Merci pour tout Lutinore, grace a toi je viens de trouver l'erreur qui
etait presque sous mes yeux, mon probleme n'en est plus un et j'arrive
a detecter les mouvements et a enregistrer ces mouvements ! Merci
encore pour ton aide Lutinore.
0
Rejoignez-nous