QT 给Qimage数据赋值,显示异常,像素对齐的坑

如果使用QImage(width, height, format)的形式创建qimage

有时候QT底层为了效率会使用像素对齐

一行的数据不一定为width

例如:

cpp 复制代码
QImage image = QImage(502, 410, QImage::Format_RGB888);
qDebug() << image.bytesPerLine();
// 按照设想应该输出 502 * 3 = 1506
// 实际输出 1508

// 假设你有一个 rgb888 数据需要赋值给 QImage
const quint8 *src_rgb888_data;

// 这种情况显示QImage的图像就会异常
memcpy(image.bits(), src_rgb888_data, image.width() * image.height() * 3);

// 正确的赋值方法
const quint8 *src = src_rgb888_data;
int srcStride = image.width() * 3;

quint8 *dst = image.bits();
int stride = image.bytesPerLine();
for(int i = 0; i < image.height(); i ++) {
	const quint8 *src_row = src + (i * srcStride);
    quint8 *row = dst + (i * stride);
    
    memcpy(row, src_row, srcStride);
}
相关推荐
wuhen_n5 分钟前
JavaScript链表与双向链表实现:理解数组与链表的差异
前端·javascript
wuhen_n9 分钟前
JavaScript数据结构深度解析:栈、队列与树的实现与应用
前端·javascript
阿猿收手吧!10 分钟前
【C++】string_view:高效字符串处理指南
开发语言·c++
狗哥哥30 分钟前
微前端路由设计方案 & 子应用管理保活
前端·架构
玄同76539 分钟前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Yorlen_Zhang1 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
lxl13071 小时前
C++算法(1)双指针
开发语言·c++
不绝1911 小时前
C#进阶:预处理指令/反射,Gettype,Typeof/关键类
开发语言·c#
前端大卫1 小时前
Vue3 + Element-Plus 自定义虚拟表格滚动实现方案【附源码】
前端
无小道1 小时前
Qt-qrc机制简单介绍
开发语言·qt