Не загружайте оригинал, если нужен миниатюрный просмотр
Большая фотография может занимать много памяти в несжатом виде. QImageReader позволяет задать целевой размер до чтения; форматный плагин может декодировать уменьшенную версию эффективнее, если поддерживает такую возможность.
QImageReader reader(fileName);
reader.setAutoTransform(true); // применить ориентацию из метаданных
reader.setScaledSize(QSize(640, 480));
const QImage image = reader.read();
if (image.isNull()) {
qWarning() << reader.errorString();
}setScaledSize() задаёт размер результата, но конкретная экономия зависит от формата и плагина. Если уменьшение при декодировании не поддержано, после чтения можно масштабировать изображение через QImage::scaled() — это всё равно требует сначала выделить память под исходник.
Проверяйте ошибку чтения и ограничивайте допустимые размеры файла, если изображения приходят извне. Для списка миниатюр выполняйте загрузку вне GUI-потока и передавайте готовый QImage в интерфейс через безопасную очередь сигналов.