如何检测 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_RGB32
或Format_ARGB32
返回的动画图像,它们的格式与静态图像相同。
有没有更好的方法可以检查该标题信息以获得更一致的结果?
【问题讨论】:
【参考方案1】:使用 QImageReader 读取图像,并使用 QImageReader::supportsAnimation() 和 QImageReader::imageCount() 检查它是否为动画图像。一旦你只有一个 QImage,这些信息就会丢失,因为 QImage 只代表一帧,即一个静态图像。
要显示动画图像,请使用QMovie。在 QtQuick 中,元素 AnimatedImage 显示动画图像。
【讨论】:
起初我不愿意尝试这个,因为它看起来需要磁盘上的文件,我想从内存中完成。经过进一步调查,看起来 QBuffer 继承了 QIODevice 可以完美运行。以上是关于如何检测 QImage 是不是为动画?的主要内容,如果未能解决你的问题,请参考以下文章
你如何检测 CSS 动画何时以 JavaScript 开始和结束?