在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);
}