C# 向图像文件添加文本

C# 向图像文件添加文本,c#,C#,我需要向图像文件中添加文本。我需要读取一个图像文件(jpg、png、gif)并向其中添加一行文字。您可以使用C#中的图形对象来完成此操作。您可以从图片(image.CreateGraphics()-或我记得的类似图片)中获取图形对象,并使用一些内置方法向其中添加文本,如:Graphycs.DrawString()或其他相关方法。在GDI+中,您可以使用图像类读入文件,然后使用图形类向其中添加文本。比如: Image image = Image.FromFile(@"c:\somepic.gi

我需要向图像文件中添加文本。我需要读取一个图像文件(jpg、png、gif)并向其中添加一行文字。

您可以使用C#中的图形对象来完成此操作。您可以从图片(image.CreateGraphics()-或我记得的类似图片)中获取图形对象,并使用一些内置方法向其中添加文本,如:Graphycs.DrawString()或其他相关方法。

在GDI+中,您可以使用图像类读入文件,然后使用图形类向其中添加文本。比如:

  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结果的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);
}
string originalImgPath=@“C:\test.gif”;
Image IMG=Image.FromFile(originalImgPath);
FrameDimension维度=新的FrameDimension(IMG.FrameDimensionsList[0]);
int frameCount=IMG.GetFrameCount(维度);
整数长度=帧数;
GifBitmapEncoder gEnc=新的GifBitmapEncoder();
for(int i=0;i

我应该提到从中获取gif帧。

这里只是扮演魔鬼代言人:显然,您需要在以后保存它!希望以上内容能有所帮助。如何旋转此文本,然后添加到图像中?检查旋转GDI+文本。还要检查,因为在这种情况下,您必须在另一个位图上写入和旋转文本,然后将其超级施加在图片上。查看它。问题是,当您打开文件时,它被锁定,因此无法保存到同一文件。我会回复你的。。。