从gif动画图像中导出桢的方法实现
近几天,一直在搞gif文件格式,在网上找到一个,正在分析。可以说gif图像在几种图像格式里面算是比较复杂的了,废话少说,先实现一个从gif动画里面导出桢来的方法:
效果如下:
原来gif动画图像:
导出来的图像:








代码:
本来想在SelectActiveFrame后像处理jpeg图像一样黑白,但是SelectActiveFrame执行后,上次的修改都变成无效的了,郁闷。SaveAdd方法也不能用于gif格式。系统只提供了gif的解码器,却没有提高编码器。晕倒。
自己从网上找了一个,正在学习
效果如下:
原来gif动画图像:

导出来的图像:








代码:
1
public void ExportFromGif(string gifFile,string outputDir)
2
{
3
Bitmap bmp = new Bitmap(gifFile);
4
if (bmp.RawFormat.Guid != ImageFormat.Gif.Guid)
5
{
6
throw new Exception("不是gif格式的文件,格式错误!");
7
}
8
//获得桢的维数
9
foreach (Guid guid in bmp.FrameDimensionsList)
10
{
11
FrameDimension frameDimension = new FrameDimension(guid);
12
//获得gif动画桢的数量
13
int frameCount = bmp.GetFrameCount(frameDimension);
14
//用于存放导出的图像
15
for (int i = 0; i < frameCount; i++)
16
{
17
//选中一桢
18
int selectResult = bmp.SelectActiveFrame(frameDimension, i);
19
if (selectResult == 0)
20
{
21
Image img = Image.FromHbitmap(bmp.GetHbitmap());
22
string savePath = outputDir + Guid.NewGuid().ToString()+".jpg";
23
img.Save(savePath);
24
img.Dispose();
25
}
26
}
27
}
28
}
29
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

本来想在SelectActiveFrame后像处理jpeg图像一样黑白,但是SelectActiveFrame执行后,上次的修改都变成无效的了,郁闷。SaveAdd方法也不能用于gif格式。系统只提供了gif的解码器,却没有提高编码器。晕倒。
自己从网上找了一个,正在学习
作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端