Supprimer une image

sahliali Messages postés 90 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 3 juillet 2008 - 25 nov. 2005 à 10:14
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 25 nov. 2005 à 17:13
Salut
En fait j'ai inserrer un object picture dans ma form, et je lui attribué une image de la manière suivante :
try
{


ofdImage =
new OpenFileDialog();


ofdImage.Title = "Selectionner l'image à inserer";


ofdImage.CheckFileExists =
true;


// ofdImage.InitialDirectory = Application.StartupPath;


ofdImage.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);


ofdImage.Filter = "Fichiers image (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*" ;


ofdImage.FilterIndex = 1 ;


ofdImage.RestoreDirectory =
true ;



if(ofdImage.ShowDialog() == DialogResult.OK)


{


Logo.Image = (Image)
new Bitmap(ofdImage.FileName);



string PathImage = Path.GetFileName(ofdImage.FileName);


}


}



catch(Exception ex)


{


MessageBox.Show (
string.Concat("Erreur: ", ex.Message));


}

Le pb que j'ai lorsque je veux supprimer ou modifier cette image, voila le code que je fais


File.Copy(ofdImage.FileName,Application.StartupPath+@"\Temp\logo",
true);



J'ai eu comme message d'eurreu :
Le processus ne peut pas acceder au fichier suivant .....
car il est en cours d'utilisation d'un autre processus.

11 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 nov. 2005 à 10:25
je serais tenté de dire que c'est normal puisque ton application accède à l'image tu ne peux pas y toucher.

Essaye ceci à la place de :

Logo.Image = (Image) new Bitmap(ofdImage.FileName);



string PathImage = Path.GetFileName(ofdImage.FileName);

-->
Bitmap b = new Bitmap(ofdImage.FileName);


Logo.Image = (Image)b.Clone();
b.Dispose();

string PathImage = Path.GetFileName(ofdImage.FileName);

Sébastien FERRAND
[MVP C#]
0
sahliali Messages postés 90 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 3 juillet 2008
25 nov. 2005 à 11:56
ca reste le meme message d'erreur quand j'affiche le logo de la manière suivante

Bitmap b =
new Bitmap(Application.StartupPath+@"\Temp\logo");


Logo.Image = (Image)b.Clone();


b.Dispose();



et je voulais le modifier :'(
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 nov. 2005 à 12:02
Salut,

Bitmap b = new Bitmap(Application.StartupPath+@"\Temp\logo");
beurk !

Bitmap b = new Bitmap(System.IO.Path.Combine(Application.StartupPath, @"\Temp\logo"));

:-)

/*
coq
MVP Visual C#
*/
0
sahliali Messages postés 90 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 3 juillet 2008
25 nov. 2005 à 12:34
LoL le coq
t'a pas lis bien mon problème :'( car j'arrive à afficher l'image avec
Bitmap b = new Bitmap(Application.StartupPath+@"\Temp\logo");


Logo.Image = (Image)b.Clone();


b.Dispose();



-------
mais mon problème c comment j'affiche l'image et apprès je peux le supprimer ou le modifier
et ne me degage pas le message d'erreur :
Le processus ne peut pas acceder au fichier suivant .....
car il est en cours d'utilisation d'un autre processus
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 nov. 2005 à 12:43
Je sais que ce n'est pas la cause du problème, mais beurk quand même :p

Suite à un pb de post mon 2eme message est passé à la trappe :

Ah oui et pour l'image c'est normal, je pense que le Clone réplique aussi d'une certaine manière le handle sur le fichier image.


private static Image SafeFromFile(string imgPath)
{
try
{
Image img = Image.FromFile(imgPath);
return new Bitmap(img);
}
catch
{
return null;
}
}

/*
coq
MVP Visual C#
*/
0
sahliali Messages postés 90 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 3 juillet 2008
25 nov. 2005 à 14:43
et ben tu ma donné une fonction qui retourne une image mais t a pas me montré comment l'utilisé !!!
dsl mais j'aime que tu sois plus claire le coq et merci bien :)
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 nov. 2005 à 14:58
rooooh... c'est pas beau en plus...

private static Image SafeFromFile(string imgPath)
{
try
{
Image img = Image.FromFile(imgPath);
Image i = new Bitmap(img);
img.Dispose();
return i;
}
catch
{
return null;
}
}

et tu l'utilises comme ceci :
Logo.Image = SafeFromFile(System.IO.Path.Combine(Application.StartupPath, @"\Temp\logo"));

Sébastien FERRAND
[MVP C#]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 nov. 2005 à 14:59
juste pour info... le Dispose sur l'image est important car sinon, la libération des ressources correspondant à l'image est longue... j'en ai fait les frais sur ma source qui fait des captures d'écrans.

Sébastien FERRAND
[MVP C#]
0
sahliali Messages postés 90 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 3 juillet 2008
25 nov. 2005 à 15:19
quand je fait l'execution pas à pas imgPaths contiens seullement @"\Temp\logo" ???
c pas normale car j'ai eu un message d'erreur aussi
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 nov. 2005 à 15:46
l'exmeple n'est pas bon... mais mets le chemin de ton image.

Sébastien FERRAND
[MVP C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 nov. 2005 à 17:13
Si il s'agit de copier l'image: img.Save( "logo" );
0
Rejoignez-nous