Загрузить QPixmap из QByteArray в Qt? - PullRequest
6 голосов
/ 26 июля 2011

У меня есть байтовый массив с содержимым изображения (в png / bmp или другом формате).

Как я могу загрузить его в QPixmap?

Ответы [ 3 ]

13 голосов
/ 26 июля 2011
bool QPixmap::loadFromData ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

Формат здесь строковый литерал, например "PNG" или что-то похожее

QPixmap p;
QByteArray pData;
// fill array with image
if(p.loadFromData(pData,"PNG"))
{
   // do something with pixmap
}
6 голосов
/ 26 июля 2011

Вы должны использовать следующий, где ваши байты находятся в переменной imageData в формате, указанном последним параметром:

QPixmap pixmap = QPixmap::fromImage(
    QImage(
        (unsigned char *) imageData, 
        image_width, 
        image_height, 
        QImage::Format_RGB888
    )
);
0 голосов
/ 26 июля 2011

Используйте этот конструктор:

QImage ( const uchar * data, int width, int height, Format format )

Вот дополнительная информация .После этого вы можете использовать QPixmap.convertFromImage() для создания растрового изображения.

...