关于QT QImage::save() 函数在Debug模式下正常,在Release模式下保存失败的问题

2022年6月23日 1229点热度 3人点赞 1条评论

问题

最近遇到一个奇葩问题,使用QImage::save保存图片文件,debug模式下一点问题都没有,结果程序发布了之后,调用save()就会返回false,导致文件保存失败。

解决过程

  1. 开始猜测是可能是文件格式的问题,因为我在保存的时候没有识别文件之前的格式,一律按照jpg格式保存的。然后手动将格式调整成为对应的格式,可以保存成功。
  2. 于是开始寻找能识别图片格式的方法,因为我的文件数据是直接通过某个api获得得源数据(应用场景所致),没办法用后缀名来判断,寻找了一些方法都无果。
  3. 在StackOverflow上找到答案,原文:https://stackoverflow.com/questions/7303665/problem-with-qt-save-function-for-qimage 有个老兄跟我遇到了一模一样的问题,有道是同病相怜啊。

结论

在发布打包的时候,我只打包了用到的几个主要的qt的动态链接库,如GUI、Core、NetWork什么的,所以导致了这个问题。

Qimage 中对文件格式的转换似乎需要对应的图片模块支持,比如下图这些

image-20220623173702451

所以如果用到了相应的格式,发布的时候最好是将这些东西一起打包发布。

坑爹的是,缺了动态链接库居然不在运行时保存,连一个警告输出都没有,这属实有点离谱。如果不是这位仁兄跟我遇到了一样的问题,我想破脑袋也想不通会是少打包了动态链接库导致的问题。

大脸猫

这个人虽然很勤快,但什么也没有留下!

文章评论

  • 腾讯云开发者社区

    您好~我是腾讯云开发者社区的运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan
    作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器等,另外还有些周边礼物

    2022年7月28日