Здравствуйте, гость ( Вход | Регистрация )
|
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 ) всегда возвращают false, и мы не знаем, можем ли мы считывать следующий кадр или нет. Усложняемся все тем, что если мы производим лишнюю операцию чтения, возникает непонятная для меня ошибка, и даже если мы снова сделаем setFileName, считать мы больше ничего не сможем. Т.е. новый цикл анимации не начнем.bool QImageReader::jumpToNextImage () Собственно говоря, у меня вопрос к сообществу. Что это бага, или я не разобрался в вопросе? ------------------------------------------------------------------------------------------------------------ Тем не менее, если вручную контролировать количество кадров (можно узнать любым графическим редактором), работа с гиф анимацией становится простой и удобной. Предлагаю, на мой взгляд, очень интересную демку. Надеюсь Вам понравится Компилируем, смотрим, отписываемся о результатах.
Прикрепленные файлы
|
|
|
|
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![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 31.12.2025, 21:33 |