Я пытаюсь создать 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.
Все изображения имеют одинаковый размер. Запись в поток тоже не займет много времени. Есть ли способ улучшить сроки?