加载QPixmap数据的更好方法
Better way to load QPixmap data
更好的方法(没有QImage
)?:
QImage image(width, height, QImage::Format_RGB888);
memcpy(image.bits(), m_frameRGB->data[0], height * width * 3);
QPixmap pixmap = QPixmap::fromImage(image);
我认为没有任何理由使用 QImage
作为中间缓冲区,但QPixmap::loadFromData
不要使用此上下文加载数据:
pixmap.loadFromData(m_frameRGB->data[0], height * width * 3); // Need pixmap resize?
文档说:"如果未指定格式(这是默认值),则加载程序会探测文件中的标头以猜测文件格式"。您只提供指向原始图像字节的指针,但您必须在缓冲区的开头提供标头,例如,对于未压缩的 PPM 格式。
编辑:您还可以测试 Roku 的建议,即使用 QImage 构造函数,该构造函数将图像数据作为参数,但请参阅文档中的注释:"缓冲区必须在 QImage 的整个生命周期内保持有效。
遵循了 Hmuelner 的暗示和...它真的比QPixmap pixmap = QPixmap::fromImage(image);
快一点
QPixmap pixmap(height, width);
QByteArray pixData;
pixData.append(QString("P6 %1 %2 255 ").arg(width).arg(height));
pixData.append((char *)m_frameRGB->data[0], width * height * 3);
pixmap.loadFromData((uchar *)pixData.data(), pixData.size());
相关文章:
- 初始化具有非默认构造函数的std::数组项的更好方法
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 编写按初始值循环的循环的更好方法是什么
- 用 c++ 为游戏制作"bullet"的更好方法?
- 在CMakeLists中包含目录的更好方法.txt
- 将QDomDocument数据用作文本的更好方法
- C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法
- 在 sqlite3 中批量插入的更好方法C++
- 设计许多单例代码结构的更好方法
- 使用继承的类模板避免公共成员不可见和源代码膨胀/重复的更好方法
- 在初始化列表中初始化数组的更好方法
- 将对象从一个 std::d eque 移动到另一个的更好方法
- 请告诉我在巴泽尔拥有多平台工作空间的更好方法
- 构造具有大量数据的对象的更好方法(C++)
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 在C++中创建不可变对象的更好方法
- 在构造函数中组织初始值设定项列表的更好方法
- std::copy with return values - 防止"expression: string iterators incompatible"的更好方法?
- 删除数组成员的更好方法是什么?
- 在C 中操作数据的更好方法是什么