我爲教育目的編寫簡單的圖像查看器。而且應用程序必須能夠縮放圖像。爲此我使用QImage :: scaled()爲什麼當我使用QImage :: scaled()時,我的內存消耗很大?
void ScreenImage::zoomImage(const qreal zoomFactor)
{
const qint32 src_width = m_Image.width();
const qint32 src_height = m_Image.height();
QImage img = m_Image.scaled(QSize(src_width, src_height) * zoomFactor,
Qt::IgnoreAspectRatio,Qt::FastTransformation);
showImage(img);
}
之後,我在QLabel上傳收到的圖像,並在屏幕上顯示他。
void ScreenImage::showImage(const QImage &img)
{
_pLabel->setPixmap(QPixmap::fromImage(img));
if(_pScrollArea->isHidden())
_pScrollArea->show();
}
問題:爲什麼我在使用QImage :: scaled()時有大的內存消耗?我如何解決它?
我記錄了video查看此問題。
感謝您的回答。
非常感謝您的回答。感謝您的想法,我已經看到了QImage :: setDevicePixelRatio(),這些都是我需要的。現在內存不消耗浪費。 –