Я пытаюсь уменьшить размеры файлов анимации GIF, которые я экспортирую, я прочитал, как это сделать. Другая тема предложила уменьшить качество, добавить сжатие и слегка размыть изображение, которое я пытаюсь сделать так:
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, сказать мне, что я делаю что-то не так, и назовите меня в правильном направлении? Мне не удалось найти другой способ применения этих настроек.
Кодер 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");
}
Убедитесь, что вы обновляетесь до последней версии, методы Optimize/OptimizeTransparency были прослушиваны в предыдущих версиях.