2016-11-25 2 views
-1

Salut im travailler sur un projet où je dois dessiner le texte de l'avant en utilisant fabric.js J'ai le code pour envoyer json pour la chaîne de dessin à savoir canvas.tojson() sur le côté serveur J'ai un problème dans C#. Je dois enregistrer l'image avec le même nom de fichier. si je tente de supprimer le fichier d'origine avant saveing ​​il dit fichier est déjà utilisé par un autre programme et si j'overrite son ne fait pas non plus comment puis-je enregistrer le fichier avec le même nom après avoir dessiné l'imagedessin chaîne sur l'image et enregistrer avec le même nom C#

ici est mon code

string file = "D:\\Folder\\file.jpg"; 
      Bitmap bitMapImage = new Bitmap(file); 
      Graphics graphicImage = Graphics.FromImage(bitMapImage); 
      graphicImage.SmoothingMode = SmoothingMode.AntiAlias; 
      graphicImage.DrawString("That's my boy!",new Font("Arial", 12, FontStyle.Bold),SystemBrushes.WindowText, new Point(100, 250)); 
      graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360); 

      System.IO.File.Delete(file); 

      bitMapImage.Save(file, ImageFormat.Jpeg); 
+0

Aussi [voir ici] (http://stackoverflow.com/questions/37736815/overwrite-image-picturebox-in-c-sharp/37741101?s=2|0.0000#37741101) – TaW

Répondre

2

clone Juste le bitmap d'origine et de disposer de l'original pour le faire libérer le fichier ...

Bitmap cloneImage = null; 
using (Bitmap bitMapImage = new Bitmap(file)) 
{ 
    cloneImage = new Bitmap(bitMapImage); 
} 


using (cloneImage) 
{ 
    Graphics graphicImage = Graphics.FromImage(cloneImage); 
    graphicImage.SmoothingMode = SmoothingMode.AntiAlias; 
    graphicImage.DrawString("That's my boy!", new Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, new Point(100, 250)); 
    graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360); 

    System.IO.File.Delete(file); 

    cloneImage.Save(file, ImageFormat.Jpeg); 
} 
1

en ce qui concerne this answer, vous pouvez obtenir le bitmap à partir d'un flux de fichiers et d'en disposer avant de changer la image:

 Bitmap bitMapImage; 
     using (var fs = new System.IO.FileStream(file, System.IO.FileMode.Open)) 
     { 
      bitMapImage = new Bitmap(fs); 
     } 

     Graphics graphicImage = Graphics.FromImage(bitMapImage); 
     graphicImage.SmoothingMode = SmoothingMode.AntiAlias; 
     graphicImage.DrawString("That's my boy!",new Font("Arial", 12, FontStyle.Bold),SystemBrushes.WindowText, new Point(100, 250)); 
     graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);   

     bitMapImage.Save(file, ImageFormat.Jpeg);