2014-10-10 3 views
1

Я пытаюсь уменьшить размеры файлов анимации GIF, которые я экспортирую, я прочитал, как это сделать. Другой поток предложил уменьшить качество, компрессии и слегка размыть изображение, которое является то, что я пытаюсь сделать так:Настройка параметров изображений в коллекции Magick .NET

using (MagickImageCollection col = new MagickImageCollection(@"C:/PathToGif")) 
     { 
      for (int i = 0; i < col.Count; i++) 
      { 
       col[i].Quality = 85; 
       col[i].CompressionMethod = CompressionMethod.LZW; 
       col[i].Strip(); 
      } 

      col.Write(@"C:/Path/To/Outputh"); 
     } 

код работает, однако настройки, похоже, игнорируются, при установке AnimationDelay то же способ делает работа. Я проверяю его, проверяя качество и размер файла вывода, которые кажутся такими же, как когда я не использую никаких настроек. Даже установка quality на 20 дает те же результаты.

Я также попытался использовать QuantizeSettings, где я передал значение 255 в категорию colors. Казалось, что я заблокировал свое приложение, используя 50% процессор. (Я дал ему около 5 минут до принудительного закрытия заявки)

Мое приложение обрабатывает .GIF около 950 кБ и превращает его в 5,3 мБ, что неприемлемо. (Отказ от ответственности: я добавляю около 20 + - кадров в .GIF и накладываю на него наложение.)

Может ли кто-то, кто имеет опыт работы с библиотекой Magick .NET, сказать мне, что я делаю что-то неправильно и нахожу меня в правильное направление? Мне не удалось найти другой способ применения этих настроек.

ответ

2

Кодировщик GIF не использует параметр качества, а CompressionMethod всегда будет CompressionMethod.LZW. Вы должны сделать следующее, если вы хотите оптимизировать выходной файл:

using (MagickImageCollection col = new MagickImageCollection(@"C:/PathToGif")) 
{ 
    col.Coalesce(); 

    AddOtherImages(col); 

    col.Optimize(); 
    col.OptimizeTransparency(); 

    col.Write(@"C:/Path/To/Output"); 
} 

Убедитесь, что вы обновиться до последней версии, методы/OptimizeTransparency Оптимизировать прослушивались в предыдущих версиях.