关于qt qpixmap qimage 无法正常加载jpg格式图片问题(坑啊)

近期遇到一个问题是
QPixmap / QImage 无法加载 .jpg / .jpeg 格式的图片
QLabel .showPixmap 无效

以下都确认是没有问题的
1.图片路径无问题
2.大部分都说是打包的程序没有把 exe 同级目录的 plugins 或者 imageformats 目录加进来
因为内部包含
在这里插入图片描述

我这些我试了 对我的这个问题是无效的,可能对你们有帮助
QApplication::addLibraryPath(QCoreApplication::applicationDirPath()+"/imageformats");

因为 QImageReader::supportedImageFormats() 我是支持jpg的
在这里插入图片描述

然后我的exe 进程加载的dll 里面有上面的dll,故不是这个问题

然后查询相关资料也没有其他的回复了 我也很奇怪
最后找到了种方案,但是真的为啥支持jpg 我还没查清楚,时间关系就先把这个问题解决,后面在谈及原因

QImageReader reader("jpg path");
reader.setDecideFormatFromContent(true);
QPixmap img = QPixmap::fromImage(reader.read());
label->setPixmap(img);
通过这个 QImageReader  是可以正常显示jpg了

这时原因未知,先解决这个问题吧.

------------------------------------------------ 第二次补充 - 原因找到了------------------------------------------

通过调试源码, 发现loadFile正常,但是文件像素为0

然后咨询对比了一下这两个png 和 jpg文件

在这里插入图片描述
文件大小一模一样 ?? 这俩都是不同格式 为啥一样呢?

草, 原来是测试 把png 手动 改为了 jpg …
然后qt 读的时候 以文件后缀格式的像素排序读像素 故以jpg的方式读假jpg(png)的所以错了…

补充:

为啥看图工具可以正常打开这个图片呢?
应该和我上面的那种实现方案一样
他直接去读像素,不会按照某种特殊的格式、、

原因发现了 开心

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值