.net c# gif动画如何添加图片水印实现思路及代码


public static Bitmap WaterMarkWithText(System.Drawing.Bitmap origialgif,string
text,string filePath)
{
//用于存放桢
List<Frame> frames = new
List<Frame>();
//如果不是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;
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...