(WPF) Как извлечь кадры из многокадровых изображений (tif, gif)

Я пытаюсь извлечь миниатюры каждого кадра в анимированный gif. Следующий код — это то, как я пытаюсь это сделать, но свойство thumbnail экземпляра BitmapFrame всегда равно null.

Я делаю что-то неправильно?


GifBitmapDecoder bd1 = new GifBitmapDecoder(
new Uri(thisImage.Path), BitmapCreateOptions.None, BitmapCacheOption.Default);
if (bd1.CheckAccess())
{
    if (bd1.Frames.Count > 1)
    {
        foreach (var frame in bd1.Frames)
        {
            BitmapSource frameThmb = frame.Thumbnail;
            if (frameThmb != null)
                Console.WriteLine(frameThmb.Width);
        }
    }
}

person Community    schedule 04.06.2009    source источник


Ответы (1)


Для GIF нет эскизов.

Из библиотеки MSDN: «Ни один из собственных форматов не поддерживает глобальные миниатюры. Объединенная группа экспертов по фотографии (JPEG), формат файла изображения с тегами (TIFF) и Microsoft Windows Media Photo поддерживают миниатюры на уровне кадра, доступ к которым можно получить с помощью свойство миниатюры"

Либо используйте TIFF (как вы упоминаете в заголовке вопроса), либо вам придется создавать эскизы самостоятельно (что не должно быть слишком сложно?)

person Oskar    schedule 05.06.2009