2014-12-07 2 views
4

Я пытаюсь создать QByteArray из QImage, однако, хотя я пробовал много вариаций, я не мог справиться с этим.Как преобразовать QImage в QByteArray?

Что я делаю:

QImage img_enrll; // <--- There is an image coming from another function. 

QByteArray arr((char*)img_enrll.bits(),img_enrll.byteCount()); // <-- convertion but I am not sure it is true or not. 

funcCheck((unsigned char*)arr.data(), arr.size(), 0, &sam, 1, &n); 


virtual Error funcCheck (const uint8_t src[], 
          size_t   src_len, 
          size_t   tout_ms, 
          IRawSample*  dst[], 
          size_t   dst_len, 
          size_t*   dst_n) 

Однако Код ошибки возвращают неверные данные. Я думаю, что преобразование QImage в QByteArray неверно. Пожалуйста, не могли бы вы мне помочь, как конвертировать в QByteArray?

ответ

4

Вы можете сделать это:

QImage img_enrll; 
QByteArray arr; 
QBuffer buffer(&arr); 
buffer.open(QIODevice::WriteOnly); 
img_enrll.save(&buffer, "yourformat"); 

Написав, что, если вам это нужно для сериализации, то лучше не с QDataStream.

+0

О, спасибо, я также пробовал это решение раньше. Но QDataStream дает мне хорошую идею, как решить эту проблему. А также он отлично работает :) – goGud

+0

Хммм, я видел это решение в документации Qt, но в моем случае буфер остается пустым. А именно: 'Q_ASSERT (buffer.data(). Size()> 0);' генерирует исключение. Конечно, я проверил, что QImage действителен: я загрузил его из файла, преобразовал в QPixmap и отобразил его внутри QLabel. –

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