2013-12-18 4 views
2

Я использую Qt 5.2, и у меня есть QImage. Если он обнаруживает URL-адрес изображения (например, ссылку imgur), он загружает это изображение и отображает его. Я хочу также оживить его, если изображение анимировано (например, gif).Как определить, анимирован ли QImage?

Я пробовал расшириться, но некоторые ссылки закончились в jpg и все еще будут анимированы. В настоящее время я использую QImage::format() для проверки на Format_ARGB32_Premultiplied, но я столкнулся с некоторыми анимированными изображениями, которые возвращаются как Format_RGB32 или Format_ARGB32, который является тем же самым форматом, что и статические изображения.

Есть ли лучший способ проверить информацию заголовка, чтобы получить более последовательные результаты?

ответ

4

Используйте QImageReader, чтобы прочитать изображение, и QImageReader::supportsAnimation() и QImageReader::imageCount(), чтобы проверить, является ли это анимированным изображением. Когда у вас будет только QImage, эта информация будет потеряна, так как QImage представляет только один кадр, то есть статическое изображение.

Для отображения анимированных изображений используйте QMovie. В QtQuick элемент AnimatedImage отображает анимированные изображения.

+0

Я не хотел сначала попробовать это, потому что он выглядел так, как будто на диске был файл, и я хотел сделать это из памяти. После дальнейшего исследования похоже, что QBuffer наследует QIODevice, который будет работать отлично. – Ben