2016-11-25 1 views
-1

hi im работает над проектом, где мне нужно нарисовать текст из переднего конца, используя fabric.js У меня есть код для отправки json для рисования строки ie canvas.tojson() на стороне сервера У меня проблема в C#. Мне нужно сохранить изображение с тем же именем. если я пытаюсь удалить исходный файл до сохранение на носители он говорит файл уже используется другой программой, и если я overrite его не делать это либо, как я могу сохранить файл с таким же именем после нанесения изображениярисовать строку на изображении и сохранять с тем же именем C#

вот мой код

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

Также [смотрите здесь] (http://stackoverflow.com/questions/37736815/overwrite-image-picturebox-in-c-sharp/37741101?s=2|0.0000#37741101) – TaW

ответ

2

Просто клон исходного растрового изображения и утилизовать оригинал, чтобы сделать его выпустить файл ...

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

со ссылкой на this answer, вы можете получить растровое изображение из потока файлов и утилизировать его, прежде чем изменить изображение:

 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); 
Смежные вопросы