将文本添加到图像文件

我需要在图像文件中添加文本。 我需要读取一个图像文件(jpg,png,gif),我需要添加一行文本。

在GDI +中,您将使用Image类读入文件,然后使用Graphics类向其中添加文本。 就像是:

Image image = Image.FromFile(@"c:\somepic.gif"); //or .jpg, etc... Graphics graphics = Graphics.FromImage(image); graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0); 

如果要将文件保存在旧文件上,则代码必须更改一点,因为Image.FromFile()方法会锁定文件,直到文件被丢弃为止。 以下是我提出的:

  FileStream fs = new FileStream(@"c:\somepic.gif", FileMode.Open, FileAccess.Read); Image image = Image.FromStream(fs); fs.Close(); Bitmap b = new Bitmap(image); Graphics graphics = Graphics.FromImage(b); graphics.DrawString("Hello", this.Font, Brushes.Black, 0, 0); b.Save(@"c:\somepic.gif", image.RawFormat); image.Dispose(); b.Dispose(); 

虽然我会彻底测试这个:)

特别是对于具有gif结果的GIF,您应该在每个帧上写如下:

 string originalImgPath = @"C:\test.gif"; Image IMG = Image.FromFile(originalImgPath); FrameDimension dimension = new FrameDimension(IMG.FrameDimensionsList[0]); int frameCount = IMG.GetFrameCount(dimension); int Length = frameCount; GifBitmapEncoder gEnc = new GifBitmapEncoder(); for (int i = 0; i < Length; i++) { // Get each frame IMG.SelectActiveFrame(dimension, i); var aFrame = new Bitmap(IMG); // write one the selected frame Graphics graphics = Graphics.FromImage(aFrame); graphics.DrawString("Hello", new Font("Arial", 24, System.Drawing.FontStyle.Bold), System.Drawing.Brushes.Black, 50, 50); var bmp = aFrame.GetHbitmap(); var src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( bmp, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); // merge frames gEnc.Frames.Add(BitmapFrame.Create(src)); } string saveImgFile = @"C:\modified_test.gif" using (FileStream fs2 = new FileStream(saveImgFile, FileMode.Create)) { gEnc.Save(fs2); } 

我应该提到从这篇文章中获取gif帧。

您可以通过在C#中使用Graphics对象来完成此操作。 你可以从图片中获取一个Graphics对象(image.CreateGraphics() – 或者像我记得的那样),并使用一些内置的方法向它添加文本,如:Graphycs.DrawString()或其他相关方法。