C# 生成动态gif图片
2018-03-23 11:12
2646 人阅读
分类:
项目中会用到将几张图片合并成一张gif动态图
这里使用 Gif.Components.dll 来生成动态gif图片
/// <summary> /// 生成gif文件 /// </summary> /// <param name="files">需要被生成的图片路径</param> /// <param name="giffile">gif保存路径</param> /// <param name="time">每帧的时间/ms</param> /// <param name="repeat">是否重复</param> /// <param name="delay">每帧播放时间(毫秒)</param> public static void ImgConvertToGif(List<string> files, string giffile, int time, bool repeat, int delay) { AnimatedGifEncoder e = new AnimatedGifEncoder(); e.Start(giffile); //每帧播放时间 e.SetDelay(delay); //-1:不重复,0:重复 e.SetRepeat(repeat ? 0 : -1); for (int i = 0, count = files.Count; i < count; i++) { e.AddFrame(getImageFile(files[i])); } e.Finish(); } private static Image getImageFile(string fileName) { if (fileName.IndexOf("http") == 0) { //网络图片 return NetImgUriToImage(fileName); } else { //本地图片 return Image.FromFile(fileName); } } /// <summary> /// 将网络图片转换 /// </summary> /// <param name="imgUrl"></param> /// <returns></returns> private static Image NetImgUriToImage(string imgUrl) { WebRequest request = WebRequest.Create(imgUrl); WebResponse response = request.GetResponse(); Stream s = response.GetResponseStream(); byte[] data = new byte[1024]; int length = 0; MemoryStream ms = new MemoryStream(); while ((length = s.Read(data, 0, data.Length)) > 0) { ms.Write(data, 0, length); } ms.Seek(0, SeekOrigin.Begin); return Image.FromStream(ms); }
调用方法,生成gif图片
static void Main(string[] args) { List<string> files = new List<string>(); files.Add(@"C:\Users\Administrator\Desktop\qrcode\2c9453762329257a6b4c2e7aec34e011.jpg"); files.Add(@"C:\Users\Administrator\Desktop\qrcode\haodai_ban.png"); files.Add("https://www.baidu.com/img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png"); string target = @"C:\Users\Administrator\Desktop\qrcode\ttttt.gif"; ImgConvertToGif(files, target, 500, true, 500); Console.ReadKey(); }
和博主交个朋友吧