crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Работа с гиф анимацией, И только кошка гуляет сама по себе... ))))
igor_bogomolov
  опции профиля:
сообщение 29.5.2009, 13:32
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Привет всем.
Недавно задался вопросом, как можно средствами Qt вытащить кадр из gif.
Оказалось, что для этого существует класс QImageReader.
Для работы с графическими файлами поддерживающих анимацию, есть методы, которые позволяют нам узнать, сколько кадров содержит файл, период обновления кадров, возможно ли перейти на кадр с определенным номером, и т.д.

Но, при работе с этими методами возникли некоторые "трудности".
методы
Цитата
int QImageReader::loopCount () const
int QImageReader::imageCount () const
всегда возвращают ноль, т.е. мы не можем узнать, сколько реально кадров содержит файл.

Цитата
bool QImageReader::jumpToImage ( int imageNumber )
bool QImageReader::jumpToNextImage ()
всегда возвращают false, и мы не знаем, можем ли мы считывать следующий кадр или нет. Усложняемся все тем, что если мы производим лишнюю операцию чтения, возникает непонятная для меня ошибка, и даже если мы снова сделаем setFileName, считать мы больше ничего не сможем. Т.е. новый цикл анимации не начнем.

Собственно говоря, у меня вопрос к сообществу. Что это бага, или я не разобрался в вопросе?


------------------------------------------------------------------------------------------------------------

Тем не менее, если вручную контролировать количество кадров (можно узнать любым графическим редактором), работа с гиф анимацией становится простой и удобной. Предлагаю, на мой взгляд, очень интересную демку. Надеюсь Вам понравится :).
Компилируем, смотрим, отписываемся о результатах.
Прикрепленные файлы
Прикрепленный файл  gifWidget.zip ( 11,35 килобайт ) Кол-во скачиваний: 170
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- igor_bogomolov   Работа с гиф анимацией   29.5.2009, 13:32
- - kwisp   Цитата(igor_bogomolov @ 29.5.2009, 14:32)...   29.5.2009, 14:07
- - igor_bogomolov   Цитата(kwisp @ 29.5.2009, 15:07) вернуло ...   29.5.2009, 14:44
- - kwisp   igor_bogomolov, лажа какая то в исходниках добрал...   29.5.2009, 14:49
- - igor_bogomolov   Цитата(kwisp @ 29.5.2009, 15:49) я это кт...   29.5.2009, 14:55
- - Litkevich Yuriy   Я для проигрования gif'ки использовал QMovie +...   29.5.2009, 14:58
- - kwisp   igor_bogomolov, загляни в исходники. очень удивиш...   29.5.2009, 15:01
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 29.5.2009, 15:58...   29.5.2009, 15:06
- - Litkevich Yuriy   Цитата(igor_bogomolov @ 29.5.2009, 19:06)...   29.5.2009, 15:38
- - kwisp   нашел где переопределяют imageCount похоже либо ба...   29.5.2009, 15:41
- - Litkevich Yuriy   Цитата(kwisp @ 29.5.2009, 19:41) мда.... ...   29.5.2009, 15:57
- - igor_bogomolov   kwisp, я переделал все на QMovie. Тож же самый фун...   29.5.2009, 15:58
- - kwisp   я бы сказал для гифа точно в классе QGifHandler не...   29.5.2009, 16:03
- - Rocky   Ребят а с тех пор никто с гифками не работал? У ме...   10.3.2010, 21:28
- - kwisp   не делал. посмотри баги может они так и остались.   10.3.2010, 21:58
- - SABROG   Узнай количество фреймов: int QMovie::frameCount ...   10.3.2010, 23:42
- - Rocky   SABROG, я так пробовал... frameCount всегда возвра...   11.3.2010, 8:28
- - SABROG   Выложи проект, посмотрю.   11.3.2010, 10:03
- - Rocky   SABROG, спасибо но там точно баги. Я гуглил. Чтобы...   15.3.2010, 9:39


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 2:25