如何检测 QImage 是不是为动画?

Posted

技术标签:

【中文标题】如何检测 QImage 是不是为动画?【英文标题】:How do I detect if a QImage is animated?如何检测 QImage 是否为动画? 【发布时间】:2013-12-18 17:39:06 【问题描述】:

我使用的是 Qt 5.2,我有一个 QImage。如果它检测到图像 url(例如 imgur 链接),它会下载该图像并显示它。如果图像是动画的(例如 gif),我也想对其进行动画处理。

我尝试过扩展,但一些链接将以 jpg 结尾并且仍然是动画的。我目前正在使用QImage::format() 来检查Format_ARGB32_Premultiplied,但我遇到了一些以Format_RGB32Format_ARGB32 返回的动画图像,它们的格式与静态图像相同。

有没有更好的方法可以检查该标题信息以获得更一致的结果?

【问题讨论】:

【参考方案1】:

使用 QImageReader 读取图像,并使用 QImageReader::supportsAnimation() 和 QImageReader::imageCount() 检查它是否为动画图像。一旦你只有一个 QImage,这些信息就会丢失,因为 QImage 只代表一帧,即一个静态图像。

要显示动画图像,请使用QMovie。在 QtQuick 中,元素 AnimatedImage 显示动画图像。

【讨论】:

起初我不愿意尝试这个,因为它看起来需要磁盘上的文件,我想从内存中完成。经过进一步调查,看起来 QBuffer 继承了 QIODevice 可以完美运行。

以上是关于如何检测 QImage 是不是为动画?的主要内容,如果未能解决你的问题,请参考以下文章

你如何检测 CSS 动画何时以 JavaScript 开始和结束?

检测页面上是不是有动画

当动画为假时,如何检测UIScrollView已完成滚动?

如何在统一场景中添加 .gif 动画? Unity 是不是支持 GIF 动画?

动画时如何检测两个图像帧的相交?

检测属性是不是可以通过 CSS3 过渡设置动画?