X|K

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首发于我的个人博客: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没有正确加载到相关动态库。
可以按照下列步骤检查:

  1. 检查当前软件运行目录中是否有imageformats目录,以及该目录是否有对应的库;
  2. 到对应版本的Qt sdk的安装目录拷贝整个imageformats目录到软件的运行目录,不需要debug版本的库可以删除带d后缀的dll;
  3. 做完上述两个步骤QImageReader::supportedImageFormats()还是返回少数格式的话,可以尝试在main函数开头添加 QApplication::addLibraryPath("./"); 让Qt 优先在当前目录查找动态库。
int main(int argc, char *argv[])
{
    QApplication::addLibraryPath("./");
    ...
}
posted on 2022-10-21 21:44  X|K  阅读(154)  评论(0)    收藏  举报