ImageMagick gif创建非常慢(约40秒)

时间:2018-05-07 13:34:30

标签: c# .net imagemagick imagemagick.net

我正在尝试用一些Bitmap图像创建一个gif,它需要很长时间才能加载。我按照库github页面上的示例进行了操作。

这是我的代码:

    public void SaveAsGif(Stream stream, ICollection<Bitmap> images, float fps, bool loop)
    {
        ICollection<IMagickImage> magickImages = new System.Collections.ObjectModel.Collection<IMagickImage>();
        float exactDelay = 100 / fps;
        foreach (Bitmap bitmap in images)
        {
            MagickImage image = new MagickImage(bitmap);
            image.AnimationDelay = (int) exactDelay;
            if (!loop)
            {
                image.AnimationIterations = 1;
            }

            magickImages.Add(image);
        }

        using (MagickImageCollection collection = new MagickImageCollection(magickImages))
        {
            QuantizeSettings settings = new QuantizeSettings();
            settings.Colors = 256;
            collection.Quantize(settings);

            collection.Optimize();
            collection.Write(stream, MagickFormat.Gif);
        }
    }

我测试过,从位图到MagickImages的图像转换不需要很长时间,最多5秒。我的图像大约是4000x3000。 所有图像都具有相同的大小。写入流也不需要很长时间。有什么方法可以改善时机吗?

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,那么显示GIF的速度很慢,而不是生成它。如果是这种情况,请在调用Add方法之前尝试调整图像大小。

e.g:

image.Resize(400,300);