网络编程 
首页 > 网络编程 > 浏览文章

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

(编辑:jimmy 日期: 2025/12/27 浏览:3 次 )
复制代码 代码如下:
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;
}
上一篇:.NET实现XML与DataTable互转的实例代码
下一篇:引用母版页后在page页面修改母版页控件的值的方法
一句话新闻
微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap