У меня есть изображение, и я пытаюсь преобразовать выбранную часть изображения с помощью метода QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode). Но этот метод возвращает нулевое изображение. Также Qt написал в стандартный вывод:
«Qimage: не хватает памяти, возвращается нулевое изображение».
QImage img;
img.load("D:\\3.png");
QPolygonF polygonIn;
polygonIn << QPointF(73, 63)
<< QPointF(362, 22)
<< QPointF(517, 325)
<< QPointF(1, 210);
QPolygonF polygonOut;
polygonOut << QPointF(45, 39)
<< QPointF(228, 13)
<< QPointF(228, 198)
<< QPointF(180, 198);
QTransform transform;
auto isOk = QTransform::quadToQuad(polygonIn, polygonOut, transform);
if(!isOk)
throw std::runtime_error("Transformation impossible with such parameters.");
auto result = img.transformed(transform, Qt::TransformationMode::SmoothTransformation);
Я пытался отлаживать источники QImage. В строке 6633 файла qimage.cpp
QImage dImage(wd, hd, target_format);
QIMAGE_SANITYCHECK_MEMORY(dImage);
значения wd и hd огромны.
Может кто знает как мне решить эту проблему. Кстати, я использую qt 4.8.4.