2016-02-14 2 views
0

Мне было любопытно, как создать анимированный .gif на C#, используя класс библиотеки imagemagick. Это то, что я использую до сих пор:Imagemagick C# animated .gif

using (MagickImageCollection collection = new MagickImageCollection()) 
{ 
    //collection.CacheDirectory = @"C:\MyProgram\MyTempDir"; 
    // Add first image and set the animation delay to 100ms 
    //MagickNET.Initialize(@"C:\Users\johsam\Downloads\Magick\MagickScript.xsd"); 
    collection.Add("Koala.jpg"); 
    collection[0].AnimationDelay = 1; 

    // Add second image, set the animation delay to 100ms and flip the image 
    collection.Add("Desert.jpg"); 
    collection[1].AnimationDelay = 100; 
    collection[1].Flip(); 

    // Optionally reduce colors 
    QuantizeSettings settings = new QuantizeSettings(); 
    settings.Colors = 256; 
    collection.Quantize(settings); 

    // Optionally optimize the images (images should have the same size). 
    collection.Optimize(); 

    // Save gif 
    collection.Write("test.Animated.gif"); 
} 

Вопрос заключается в том, что, хотя он создает .gif нет движущегося изображения, когда вы открываете его. Как вы собираетесь объединять изображения вместе для создания движущегося изображения?

ответ

1

Код, который вы используете, представляется примером, приведенным в кодексе site. Логика, похоже, работает так, как предполагалось, но моя презумпция заключается в том, что задержка анимации на исходном изображении в коллекции слишком мала (1 мс). Возможно, вы увидите только второе изображение. Увеличьте задержку анимации (до 100 мс) и подтвердите. После завершения вы можете соответствующим образом отрегулировать задержку до интервала, который дает желаемый результат.

Смежные вопросы