532bool QImageIOHandler::allocateImage(QSize size, QImage::Format format, QImage *image)
535 if (size.isEmpty() || format <= QImage::Format_Invalid || format >= QImage::NImageFormats)
538 if (image->size() == size && image->format() == format) {
541 if (
const int mbLimit = QImageReader::allocationLimit()) {
542 qsizetype depth = qMax(qt_depthForFormat(format), 32);
543 QImageData::ImageSizeParameters szp =
544 QImageData::calculateImageParameters(size.width(), size.height(), depth);
547 const qsizetype mb = szp.totalSize >> 20;
548 if (mb > mbLimit || (mb == mbLimit && szp.totalSize % (1 << 20))) {
549 qCWarning(lcImageIo,
"QImageIOHandler: Rejecting image as it exceeds the current "
550 "allocation limit of %i megabytes", mbLimit);
554 *image = QImage(size, format);
556 return !image->isNull();