復(fù)制代碼 代碼如下:
public static Bitmap WaterMarkWithText(System.Drawing.Bitmap origialGif, string
text,string filePath)
{
//用于存放楨
ListFrame> frames = new
ListFrame>();
//如果不是gif文件,直接返回原圖像
if (origialGif.RawFormat.Guid
!= System.Drawing.Imaging.ImageFormat.Gif.Guid)
{
return origialGif;
}
//如果該圖像是gif文件
foreach (Guid guid in
origialGif.FrameDimensionsList)
{
System.Drawing.Imaging.FrameDimension
frameDimension = new System.Drawing.Imaging.FrameDimension(guid);
int
frameCount = origialGif.GetFrameCount(frameDimension);
for (int i = 0; i
frameCount; i++)
{
if (origialGif.SelectActiveFrame(frameDimension,
i) == 0)
{
int delay =
Convert.ToInt32(origialGif.GetPropertyItem(20736).Value.GetValue(i));
Image
img = Image.FromHbitmap(origialGif.GetHbitmap());
Font font = new Font(new
FontFamily("宋體"), 35.0f,FontStyle.Bold);
Graphics g =
Graphics.FromImage(img);
g.DrawString(text, font, Brushes.BlanchedAlmond,
new PointF(10.0f, 10.0f));
Frame frame = new Frame(img, delay);
frames.Add(frame);
}
}
Gif.Components.AnimatedGifEncoder gif =
new Gif.Components.AnimatedGifEncoder();
gif.Start(filePath);
gif.SetDelay(100);
gif.SetRepeat(0);
for (int i = 0; i
frames.Count; i++)
{
gif.AddFrame(frames[i].Image);
}
gif.Finish();
try
{
Bitmap gifImg =
(Bitmap)Bitmap.FromFile(filePath);
return gifImg;
}
catch
{
return origialGif;
}
}
return origialGif;
}
您可能感興趣的文章:- C#判斷一個(gè)圖像是否是透明的GIF圖的方法
- C#中使用UDP通信的示例
- c# 獲取照片的經(jīng)緯度和時(shí)間的示例代碼
- 大白話講解C# 中的委托
- C#中Write()和WriteLine()的區(qū)別分析
- c# 動(dòng)態(tài)構(gòu)建LINQ查詢表達(dá)式
- 詳解c# 協(xié)變和逆變
- c# 播放聲音的四種方法
- C#實(shí)現(xiàn)窗體抖動(dòng)的兩種方法
- c# 制作gif的四種方法