Недавно задался вопросом, как можно средствами Qt вытащить кадр из gif.
Оказалось, что для этого существует класс QImageReader.
Для работы с графическими файлами поддерживающих анимацию, есть методы, которые позволяют нам узнать, сколько кадров содержит файл, период обновления кадров, возможно ли перейти на кадр с определенным номером, и т.д.
Но, при работе с этими методами возникли некоторые "трудности".
методы
Цитата
int QImageReader::loopCount () const
int QImageReader::imageCount () const
всегда возвращают ноль, т.е. мы не можем узнать, сколько реально кадров содержит файл.int QImageReader::imageCount () const
Цитата
bool QImageReader::jumpToImage ( int imageNumber )
bool QImageReader::jumpToNextImage ()
всегда возвращают false, и мы не знаем, можем ли мы считывать следующий кадр или нет. Усложняемся все тем, что если мы производим лишнюю операцию чтения, возникает непонятная для меня ошибка, и даже если мы снова сделаем setFileName, считать мы больше ничего не сможем. Т.е. новый цикл анимации не начнем.bool QImageReader::jumpToNextImage ()
Собственно говоря, у меня вопрос к сообществу. Что это бага, или я не разобрался в вопросе?
------------------------------------------------------------------------------------------------------------
Тем не менее, если вручную контролировать количество кадров (можно узнать любым графическим редактором), работа с гиф анимацией становится простой и удобной. Предлагаю, на мой взгляд, очень интересную демку. Надеюсь Вам понравится .
Компилируем, смотрим, отписываемся о результатах.