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

本文主要讨论了Qt应用程序在运行时QImageReader和QImageWriter支持的图片格式减少的问题,如缺少jpg格式。原因是Qt插件未能正确加载。解决方案包括检查软件运行目录的imageformats目录,从Qt SDK复制相关库,以及在main函数中添加QApplication::addLibraryPath来指定动态库查找路径。通过这些步骤,可以确保Qt正确识别和处理更多图片格式。
摘要由CSDN通过智能技术生成

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值