QT中解决QPixmap加载大图片报错的问题(错误指示到QPMCache::releaseKey函数第一行)

最近用Qt5,在window7 64位系统上,利用QPixmap加载图片,遇到对大尺寸的图片会报错。
图片的尺寸是:5000*1974,大小:1.56MB(详细信息:水平分辨率96 dpi,竖直分辨率96dpi,位深度24,分辨率单位2,颜色显示sRGB。)
原来的代码

QPixmap image(picFullPath);

报错到:

void QPMCache::releaseKey(const QPixmapCache::Key &key)
{
    if(key.d->key > keyArraySize || key.d->key <= 0)  //错误显示到这里
        return;
    key.d->key--;
    keyArray[key.d->key] = freeKey;
    freeKey = key.d->key;
    key.d->isValid = false;
    key.d->key = 0;
}

解决方法:

QImage image;
image.load(picFullPath);
QPixmap pixmapToShow = QPixmap::fromImage(image.scaled(QSize(200, 200), Qt::KeepAspectRatio));
...

这样之后再加载QPixmap的图片就不会报错了。
原理参考:https://blog.csdn.net/jiong_1988/article/details/7472159

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值