为gif动画添加水印-有具体实现[2008-02-15日更新]
更新:有了改善了性能的具体实现。速度提升几百倍
更新:早晨的版本在计算格帧之间时间延迟上有错误,现更正,纠正了动画变快或者变慢的问题
2007年,曾发过两篇解决为gif动画添加水印的文章,分别为:
给gif动画添加水印的初步实现
改善了性能的gif动画添加水印
当时,没有将完整的实现放上来,过去的一年中,陆陆续续的接到好多朋友的邮件,希望能发一份完整的实现,但由于移动硬盘毁坏,原来的代码已经找不到了,一直没能给大家一个很好的回复,深表歉意,现在将完整的程序重新实现了一遍,速度比较慢的,但思路基本有了,希望能给大家一个交待。
原图片:
水印后:
比去年版本的改进:
1)解决了各帧之间间隔变快的问题
未解决的问题
1)效率问题(2008-02-15已有更新,有了改善性能后的具体实现,速度提升几百倍)
2)透明背景的处理
项目文件:/Files/jillzhang/Gif.rar
改善性能后的具体实现:/Files/jillzhang/Gif_Faster.rar
更新:早晨的版本在计算格帧之间时间延迟上有错误,现更正,纠正了动画变快或者变慢的问题
纠正后版本:/Files/jillzhang/Gif_Faster_LastEdited.rar (最新 2008-02-15 17:49)
原来错误的将
int delay = ora_Img.GetPropertyItem(20736).Value[i]
其实ora_Img.GetPropertyItem(20736).Value获得的是1个byte[],这个数组中每四位代表1个delay值。
现已经更正为 int delay = BitConverter.ToInt32(buffer, i * 4);
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络