Qt关于图片读取失败的问题解答

今天尝试用QT来写个小程序,想给QWidget添加背景图片,涉及图片的读取、显示,但是在图片读取的时候死活读不进来,数据一直为空。这个问题折腾了将近两三个小时,在网上也找了很多相关的资料,但一直未解决,最后快要放弃的时候终于找到了原因(啰嗦了这么多只想表达这个下午一直被这个问题困扰,太难受了)。好了,废话不多说,直接说原因吧,那就是不要轻易改变图片原来的格式,即.jpg的图直接改后缀为.png,这就有可能出错(今天真是手贱啊,一上来就把图片的格式改了!!)

另外,网上也又有另外两种情况:
1.图片的的路径格式不对,相对路径用“\”,把要读的图片文件夹放到与exe相同的路径下,如下图:

假设图片为:1.jpg,图片加载为:QImage image.load(“images\1.jpg”),如果是绝对路径则用"/",如"C:/Pictures/Saved Pictures/back.jpg".
2.缺少dll,需要将QT安装目录下(我的是:“QT5.8.9\5.9.8\msvc2013_64\plugins”)将imageformats文件夹拷贝到与exe相同的路径下。

3、解决方案:确实人为修改了图片的后缀,可以使用QImageReader类,设置按照图片的实际格式读取图片文件。
QImageReader和QImageWriter :https://blog.csdn.net/weixin_33861800/article/details/90524905

以下代码将D:\1.png读取到image对象

 QImageReader reader;
 QImage image;
 reader.setDecideFormatFromContent(true); //强制设定通过文件实际内容格式打开文件
 reader.setFileName("D:\1.png");
 if (reader.canRead())
 {
     if (!reader.read(&image))
     {
         QImageReader::ImageReaderError error = reader.error();
         QString strError = reader.errorString();
         qDebug() << "Last Error : " << strError;
         return false;
     }
         
 }
 else
 {
     QImageReader::ImageReaderError error = reader.error();
     QString strError = reader.errorString();
     qDebug() << "Last Error : " << strError;
     return false;
 }


版权声明:本文为weixin_43277501原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。