如何将QImage转换为QByteArray?

时间:2014-12-07 14:20:30

标签: c++ qt qtgui qimage qbytearray

我正在尝试从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吗?

3 个答案:

答案 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());