从缓冲区创建Qimage,没有深层复制

Create QImage from buffer, no deep copy?

本文关键字:复制 缓冲区 创建 Qimage      更新时间:2023-10-16

在qt中,如何从字节数组('uint8_t*`)中构造一个 QImage对象,而无需创建深层副本,只是引用我的数据阵列?

使用任何服用uchar *的构造函数,例如

QImage::QImage(uchar *data, 
               int width, 
               int height, 
               int bytesPerLine, 
               Format format, 
               QImageCleanupFunction cleanupFunction = Q_NULLPTR, 
               void *cleanupInfo = Q_NULLPTR)

如文档所说:

缓冲区必须在整个Qimage的寿命中保持有效,并且所有尚未修改或以其他方式从原始缓冲区脱离的副本。该图像不会在破坏时删除缓冲区。您可以提供功能指针清理功能以及额外的指针清理upinfo,当最后一个副本被销毁时将被称为。