提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
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插件,插件路径固定。