效果
程序分析
-
本次需要使用到第三方开源工具库 AnimatedGif
-
AnimatedGif 是 github上的一个开源项目, 地址是:https://github.com/mrousavy/AnimatedGif
-
使用也非常方便,以下代码即可:
-
using (var gif = AnimatedGif.Create("mygif.gif", 33)) { var img = Image.FromFile("myimage.png"); gif.AddFrame(img, delay: -1, quality: GifQuality.Bit8); }
-
-
使用之前需要先在 vs中安装,本文采用 Nuget 方式安装 ,步骤如下:
-
选中项目右键——》管理Nuget程序包
-
输入 AnimatedGif,搜索安装即可,安装后重新启动VS
-
-
界面布局
-
一个Button按钮,选择要生成为GIF的源图片,支持多选
-
一个textBox输入框,用来输入播放的延迟时长,单位ms(毫秒)
-
一个ListBox,用来显示生成结果及存放路径
-
两个label控件,显示描述文案
-
程序逻辑及代码
Button按钮
-
打开电脑选择本地图片原文件,支持多选
-
选完点击确定逻辑:
-
清空listbox中的文案
-
显示文案,开始生成gif图片
-
生成gif图片
-
显示文案,结束生成gif图片
-
private void button1_Click(object sender, EventArgs e)
{
// 导入图片文件
OpenFileDialog ofd = new OpenFileDialog();
//设置初始打开目录
ofd.InitialDirectory = @"D:\";
ofd.Title = "请选择您的图片文件";
ofd.Filter = "图片文件|*.jpg;*.png;";
//打开文件多选
ofd.Multiselect = true;
// 点击确定的时候,将音乐导入列表
if (ofd.ShowDialog() == DialogResult.OK)
{
// 先清空
this.listBox1.Items.Clear();
this.listBox1.Items.Add("开始生成gif文件......");
// 生成gif图片
GeneraterGif(ofd.FileNames);
this.listBox1.Items.Add("结束生成gif文件......\r\n");
}
}
生成gif代码
private void GeneraterGif(string[] imgList)
{
if(imgList == null)
{
return;
}
// 播放延迟,默认设置为 300ms
int delay = 300;
// 获取文件目录作为 生成文件存放目录
string filePath = GetFolderPath(imgList[0]);
string resultFilePath = filePath + "\\result.gif";
this.listBox1.Items.Add("生成结果文件存在目录是:"+ resultFilePath);
// "mygif.gif"使用文件名和33帧间延迟毫秒 (~30fps)创建 GIF 。将16ms 用于 60fps 等。
using (var gif = AnimatedGif.AnimatedGif.Create(resultFilePath, delay))
{
foreach (string imgPath in imgList)
{
var img = Image.FromFile(imgPath);
gif.AddFrame(img, delay: delay, quality: GifQuality.Bit8);
}
}
}
获取最终文件存放目录
private string GetFolderPath(string filePath)
{
int index = filePath.LastIndexOf('\\');
return filePath.Substring(0, index);
}
更多**好看的内容**和**好玩的案例**请关注**我的微信公众号: 程序猿知秋**