2015-03-29 9 views
1

Привет, я пытаюсь преобразовать массив байтов в изображение, но каждый раз, когда я получаю нулевой образ, кто-то может мне помочь?Преобразование байтового массива в изображение

QImage image("p.jpg"); 
qDebug()<<image; 
    QImage image2; 
QByteArray paquet2; 
QDataStream out2(&paquet2, QIODevice::WriteOnly); 

out2 << image; 

qDebug()<<image2.fromData(paquet2,"jpg"); 

QDebug 1 результат: QImage (QSize (500500))
QDebug 2 результат: QImage (QSize (0,0))

ответ

1

fromData() является статическим методом.

Попробуйте image2.loadFromData(paquet2) или QImage::fromData(paquet2) вместо этого.

я заметил что-то очень странно, этот код работает, как ожидалось:

QImage img("..."); 
    QByteArray data; 
    QBuffer buff(&data); 
    QDataStream out(&buff); 
    out << img; 
    qDebug() << QImage::fromData(data); 

Но это дает предупреждение о IODevice не быть открытым.

Если я вручную buff.open(), fromData() снова производит нулевое изображение.

без явного открытия, то openMode() автоматически устанавливается Unbuffered | WriteOnly и она работает, если я open() это явно Unbuffered | WriteOnly она не работает. Go figure ...

Смежные вопросы