如何使用ImageSharp创建Gif .net Core2

时间:2018-02-02 07:28:46

标签: c# .net imagesharp

是否可以使用ImageSharp从.net core2中的某些jpeg创建一个gif?

我可以使用Magick.Net从一些jpeg创建一个gif,但它确实不适用于Linux。

我想在Ubuntu 14上这样做。

  

修改

我可以使用ImageSharp从Jpegs创建一个Gif。这是我的源代码:

        var ite = fsArray.GetEnumerator(); // fsArray is FileStream Array
        ite.MoveNext();
        using (var image1 = Image.Load(ite.Current.Name))
        {
            image1.Mutate(x => x.Resize(width, height));

            // loop
            while (ite.MoveNext())
            {
                using (var image2 = Image.Load(ite.Current.Name))
                {
                    image2.Mutate(x => x.Resize(width, height));
                    image2.Frames.First().MetaData.FrameDelay = interval;
                    image1.Frames.AddFrame(image2.Frames.First());
                }
            }
            msGif = new FileStream("result.gif", FileMode.CreateNew);
            var gifEnc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder();
            image1.Save(msGif, gifEnc);
            msGif.Close();
        }

1 个答案:

答案 0 :(得分:11)

  1. 加载两张图片
  2. 将第二张图片中的第一帧(缩放后)添加为ImageFrame<T>到第一张图片上的Frames属性。
  3. 将输出图像另存为gif。
  4. 将图像另存为gif时会自动进行量化。目前,将为每个帧生成一个单独的调色板。

    using (var image1 = Image.Load(instream1))
    using (var image2 = Image.Load(instream2))
    {
      image2.Mutate(x => x.Resize(image1.Width, image1.Height));
      image1.Frames.AddFrame(image2.Frames[0]);
    
      image1.Save(outstream, new GifEncoder());
    }