首发于我的个人博客:xie-kang.com
博客内有更多文章,欢迎大家访问
原文地址
获取程序支持的图片格式:
#include "mainwindow.h"
#include <QApplication>
#include <QImageReader>
#include <QImageWriter>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/// 打印支持图片格式
qWarning()<<QImageReader::supportedImageFormats();
MainWindow w;
w.show();
return a.exec();
}
QImageReader::supportedImageFormats()或者QImageWriter::supportedImageFormats()返回的支持格式列表比正常少了许多,在本机的运行环境中返回值只有:
(“bmp”, “pbm”, “pgm”, “png”, “ppm”, “xbm”, “xpm”)
举个例子,这里面没有jpg,这会影响QImage\QPixmap\QImageReader\QImageWriter对jpg的保存解析,调用如QImage::save(path, “JPG”)等函数会一直返回false(想获取具体出错信息,可以使用QImageReader(Writer)进行读写,使用QImageReader(Writer)::errorString()可以获取错误信息)。
原因是Qt plugin没有正确加载到相关动态库。
可以按照下列步骤检查:
- 检查当前软件运行目录中是否有imageformats目录,以及该目录是否有对应的库;
- 到对应版本的Qt sdk的安装目录拷贝整个imageformats目录到软件的运行目录,不需要debug版本的库可以删除带d后缀的dll;
- 做完上述两个步骤QImageReader::supportedImageFormats()还是返回少数格式的话,可以尝试在main函数开头添加 QApplication::addLibraryPath(“./”); 让Qt 优先在当前目录查找动态库。
int main(int argc, char *argv[])
{
QApplication::addLibraryPath("./");
...
}