最近用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