博主喝口茶,一毛也是爱

收缩

C# 生成动态gif图片

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();
}



和博主交个朋友吧
    发布篇幅
    • 文章总数:0
    • 原创:0
    • 转载:0
    • 译文:0
    文章分类
      文章存档
      阅读排行