近期遇到一个问题是
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)的所以错了…
补充:
为啥看图工具可以正常打开这个图片呢?
应该和我上面的那种实现方案一样
他直接去读像素,不会按照某种特殊的格式、、
原因发现了 开心