QImageReader(Writer)支持格式变少的解决方法

2023-04-12编程技术207515

首发于我的个人博客: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("./");
...
}

QImageReader(Writer)支持格式变少的解决方法的相关教程结束。

本文地址:https://www.ufcn.cn/tutorials/2454295.html

如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!