在Qt中使用APNG图片
本文转载于这里
在Qt中显示gif动画中会有锯齿,APNG也可以解决动画周边锯齿的问题。
APNG又叫动态PNG(Animated PNG),第1帧为标准PNG图像,剩余的动画和帧速等数据放在PNG扩展数据块里,因此只支持原版PNG的软件会正确显示第1帧
直接下载库https://install.skycoder42.de/qtmodules/
或自行编译https://github.com/Skycoder42/QtApng
使用举例:
#include <QMovie>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget) {
ui->setupUi(this);
ui->label_image_apng->setPixmap(QPixmap(QStringLiteral(":/data/sample.apng")));
ui->label_image_png->setPixmap(QPixmap(QStringLiteral(":/data/sample.png"), "apng"));
auto m1 = new QMovie(QStringLiteral(":/data/sample.apng"), "apng", this);
m1->start();
ui->label_movie_apng->setMovie(m1);
auto m2 = new QMovie(QStringLiteral(":/data/sample.png"), "apng", this);
m2->start();
ui->label_movie_png->setMovie(m2);
}