提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
QImage支持很多图像格式,有些是默认支持的,如png,bmp等。有些需要加载插件后才能支持,如jpg,tif等。
QImage默认支持格式如下图:bmp,png等
加载插件后支持的格式如下图:gif,jpg,tif等
一、加载插件方式
在bin目录下,新建文件夹plugins,然后将Qt的imageformats文件夹拷贝到plugins下。其中imageformats内是插件dll。如下:
bin/plugins/imageformats/qjpeg.dll
1. 通过qt.conf文件配置,插件路径灵活
在bin目录下,新建文件qt.conf,然后添加下面内容。告诉程序加载bin/plugins下的插件。
[paths]
Plugins = ./plugins
2. 调用代码加载插件,插件路径固定
读写QImage前,添加插件路径。告诉程序加载bin/plugins下的插件。
QString appPath = QCoreApplication::applicationDirPath();
QCoreApplication::addLibraryPath(appPath + “/plugins”);
二、示例
1.读写png格式:打开1.png图,旋转45度后,保存成成新图1_out.png
代码如下(示例):
#include <QtCore/QCoreApplication>
#include <QImage>
#include <QImageReader>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//QString appPath = QCoreApplication::applicationDirPath();
//QStringList libPaths = QCoreApplication::libraryPaths();
//QCoreApplication::addLibraryPath(appPath + "/plugins");
//libPaths = QCoreApplication::libraryPaths();
qDebug() << "support format: " << QImageReader::supportedImageFormats();
QString filename = "d:/1.png";
QImage image(filename);
if (!image.isNull())
{
QTransform transform;
transform.rotate(45); // 旋转45度
image = image.transformed(transform);
image.save("d:/1_out.png"); // 保存旋转后的图
}
return a.exec();
}
打印出QImage默认支持png格式
原图:1.png
旋转45度后效果图:1_out.png
2.读写jpg格式:打开1.jpg图,旋转45度后,保存成成新图1_out.jpg
2.1 通过qt.conf文件配置插件路径,插件路径灵活
代码如下(示例):
#include <QtCore/QCoreApplication>
#include <QImage>
#include <QImageReader>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// QString appPath = QCoreApplication::applicationDirPath();
// QStringList libPaths = QCoreApplication::libraryPaths();
// qt.conf已经配置,无需再调用代码
// QCoreApplication::addLibraryPath(appPath + "/plugins");
// libPaths = QCoreApplication::libraryPaths();
qDebug() << "support format: " << QImageReader::supportedImageFormats();
QString filename = "d:/1.jpg";
QImage image(filename);
if (!image.isNull())
{
QTransform transform;
transform.rotate(45);
image = image.transformed(transform);
image.save("d:/1_out.jpg");
}
return a.exec();
}
2.2 调用代码加载插件,插件路径固定
代码如下(示例):
#include <QtCore/QCoreApplication>
#include <QImage>
#include <QImageReader>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString appPath = QCoreApplication::applicationDirPath();
QStringList libPaths = QCoreApplication::libraryPaths();
// 调用代码加载插件,否则无法读写jpg
QCoreApplication::addLibraryPath(appPath + "/plugins");
libPaths = QCoreApplication::libraryPaths();
qDebug() << "support format: " << QImageReader::supportedImageFormats();
QString filename = "d:/1.jpg";
QImage image(filename);
if (!image.isNull())
{
QTransform transform;
transform.rotate(45);
image = image.transformed(transform);
image.save("d:/1_out.jpg");
}
return a.exec();
}
加载插件后,打印出QImage支持jpg格式
原图:1.jpg
旋转45度后效果图:1_out.jpg
总结
Qt默认支持png格式,可以直接读写png。
Qt默认不支持jpg格式,需要加载插件后,才能读写jpg。
1.通过qt.conf文件配置jpg插件,插件路径灵活。
2.调用代码加载jpg插件,插件路径固定。