Как преобразовать QPixmap в base64 QString в Qt?

Я использую QT 5.7 для программы, в которой мне нужно преобразовать QPixmap в формат base64 QString. Я попытался сначала преобразовать QPixmap в cv::Mat, а затем добавил существующий поток преобразования.

Qpixmap pix;
cv::Mat pixData(pix.rows(),pix.cols(),CV_8UC3,pix.scanline());
                std::vector<uchar> IMbuffer;
                cv::imencode(".png", pixData, IMbuffer);
     QByteArray byteArray = QByteArray::fromRawData((const char*)IMbuffer.data(), IMbuffer.size());
                QString base64Image(byteArray.toBase64());

Но возвращает ошибку:

error: 'class QPixmap' has no member named 'rows'
    cv::Mat pixData(pix.rows(),pix.cols(),CV_8UC3,pix.scanline());
                    ^

Итак, понятно, что такое преобразование из QPixmap в cv::Mat несовместимо. Итак, есть ли простой способ преобразовать QPixmap в base64 QString?


person nocturnal_abu    schedule 07.11.2018    source источник


Ответы (1)


Попробуй это;

 QBuffer buffer;
 buffer.open(QIODevice::WriteOnly);
 pix.save(&buffer, "PNG");
 auto const encoded = buffer.data().toBase64();
person john elemans    schedule 07.11.2018
comment
В нем говорится об ошибке: «QBuffer» не был объявлен в этом буфере QBuffer области; Какой заголовок должен быть включен для QBuffer? ^ - person nocturnal_abu; 08.11.2018
comment
@nocturnal_abu используйте #include <QBuffer> - person eyllanesc; 08.11.2018
comment
Добавление #include ‹QBuffer› компилируется и работает как шарм. Большое спасибо. - person nocturnal_abu; 08.11.2018