在 Qt Release 版本里正确使用图像编码库
文章目录
这两天在写 Qt 代码时,用 QPixmap 的 load 或是 loadFromData 方法来从图片文件里导入 Jpeg 图像数据,结果在 debug 版本下可以正确导入图像,可是在 release 版本下却没有办法导入图像。
这个时候,原因多半是 Qt 不支持这个图像格式,可以用下面的代码来检查当前的 Qt 版本支持的图像格式种类,并检查里面是否支持 JPEG 图像格式。
QString fileFormats = ""; /* Get all inputformats */ for (int i = 0; i < QImageReader::supportedImageFormats().count(); i++) { fileFormats += "*."; /* Insert wildcard */ fileFormats += QString(QImageReader::supportedImageFormats().at(i)).toLower(); /* Insert the format */ fileFormats += " "; /* Insert a space */ }
从结果可以看出,当前的 Release 版本的确是不支持 Jpeg 图像格式。是由什么原因造成的这个现象呢?
这里情况比较特殊:并不是 Qt 不支持这个图像格式,而是需要在 release 版本里包括这个解码库。即把 qjpeg4.dll 链接库拷贝成 release 目录下的
imageformats/qjpeg4.dll
文件。你只需要让 Release 版本的可执行文件,可以正确找到该编码库链接库即可。请注意当你打包成安装文件进行安装时,一定要注意把该链接库安装到目录 imageformats 下,否则依然无法正确使用。
类似的问题,同样会存在于字符集编码等其它插件里:当你使用了指定的字符集编码时,则同样需要打包类似的库。例如,对于简体中文来说,需要把 qcncodecs4.dll 打包安装成
/codecs/qcncodecs4.dll
文件。
文章作者 cookwhy
上次更新 2013-08-16