Problème écriture fichier image

Résolu
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008 - 23 mai 2006 à 20:37
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 24 mai 2006 à 09:00
Bonjour,
j'ai actuellement un petit problème qui me bloque pour avancer dans mon programme pourtant, cela semble facile à résoudre, mais comment?
Je developpe sous C# express. Mon application modifie des images. C'est à dire que je prend une image par la méthode im=Image.fromFile(string path).Clone() as Image.
Le problème intervient lorsque je veux sauvegardé l'image im que j'ai modifié par im.Save(path). Il me semble que le problème vient du fait que la fichier à l'adresse path est utilisé par le système et que je ne peux donc pas copier im à cet endroit or c'est ce que je dois faire. J'ai vérifié en faisant im.Save("essai.jpg") et ça fonctionne parfaitement... J'ai fait un try catch mais l'erreur découverte est "exeption générique GDI+" bref rien de bien clair.
Merci beaucoup pour votre aide

7 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 mai 2006 à 21:12
Si tu veux sauver sur le même emplacement, je pense que tu dois :

Faire les modifs que tu veux sur ton image.
La sauver dans un endroit temporaire.
Appeler Dispose et mettre à null ton image.
Faire un File.Move() pour écraser.

<hr size= "2" /> VC# forever
=13319
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
23 mai 2006 à 22:36
Salut,

try
{
    Image img = Image.FromFile( path );
    Bitmap bmp = new Bitmap( img.Width, img.Height, img.PixelFormat );


    using ( Graphics g = Graphics.FromImage( bmp ) )
    {
        g.DrawImage( img, new Rectangle( 0, 0, img.Width, img.Height ) );


        // Dispose l'originale.
        img.Dispose( );
        img = null;


        // Ici tu travailles sur l'image avec le Graphics.
        //g.DrawString( DateTime.Now.ToLongDateString( ), this.Font, Brushes.White, 10.0f, 10.0f );
    }


    // Sauvegarde la copie.
    bmp.Save( path, ImageFormat.Jpeg );
}
catch ( Exception ex )
{
    MessageBox.Show( ex.ToString( ) );
}
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 mai 2006 à 20:46
Salut,
Oui, tu dois sauver ton image à un autre droit, car l'image est court d'utilisation...
Faut spécifier un autre path.

<hr size= "2" /> VC# forever
=13319
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
23 mai 2006 à 20:50
Ah mince, le problème c'est qu'il faut impérativement que mon image modifiée soit dans le repertoire d'origine à la place de l'image originale... En fait je penser que .clone() ça faisait comme une copie de l'image et la laissée inutilisée mais apparement ce n'est pas le cas. Sinon, pensez vous qu'en copiant l'image originale dans un dossier temporaire, prendre cette copie en .clone() permettra d'enregistrer dans le path initial?
Merci beaucoup
0

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

Posez votre question
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
23 mai 2006 à 21:15
Merci,
je vais essayer ça et si ça marche, ce qui me ferait  bien plaisir!!! je valide ta réponse,
merci et bonne soirée
0
Supopste Messages postés 69 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 mars 2008
23 mai 2006 à 21:28
Merci beaucoup Bidou!
J'ai fait comme tu m'as conseillé à la différence que j'ai fait un File.Copy() qui permet un overwritte sur un fichier existant alors que File.Move() veut à tout prix creér un nouveau fichier etr n'aime pas que le fichier existe déjà. (Enfin de ce que j'ai vu en programmant).
Merci infiniment pour cette aide précieuse, rapide et efficace, C# forever
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
24 mai 2006 à 09:00
Moui, je pense que c'est une meilleure solution, on est quitte de devoir sauver dans un endroit temporaire...

<hr size= "2" /> VC# forever
=13319
0
Rejoignez-nous