我正在尝试从QImage创建QByteArray,但是虽然我尝试了很多varient,但我无法处理它。
我在做的是:
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吗?
答案 0 :(得分:6)
你可以这样做:
QImage img_enrll;
QByteArray arr;
QBuffer buffer(&arr);
buffer.open(QIODevice::WriteOnly);
img_enrll.save(&buffer, "yourformat");
写完后,如果你需要这个序列化,你最好使用QDataStream。
答案 1 :(得分:0)
尝试一下:
QByteArray arr = QByteArray::fromRawData((const char*)img.bits(), img.byteCount());
答案 2 :(得分:0)
就我而言,我需要一个深拷贝,所以有效的是:
QByteArray arr(img.byteCount(), Qt::Uninitialized) // or resize if it already exists
memcpy(arr.data(), img.constBits(), img.byteCount());