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);
}
相关推荐
PBitW4 分钟前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
Hilaku11 分钟前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
故乡de云20 分钟前
AWS 添加付款方式失败排查清单:卡片、银行风控与账号状态逐项定位
开发语言·php
PBitW24 分钟前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
名字还没想好☜26 分钟前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate
J_yyy26 分钟前
【Qt核心组件类框架】
开发语言·qt
come1123441 分钟前
Vue 2 与 Vue 3 语法区别及使用技巧
前端·javascript·vue.js
运维行者_42 分钟前
如何查看每个IP的带宽使用情况?NetFlow 技术实战指南
开发语言·网络·分布式·后端·架构·带宽
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:ERP 企业资源模块,一个轻量级进销存的完整实现?
前端·javascript·vue.js·人工智能·前端框架·产品经理·ai编程
天天进步20151 小时前
Python全栈项目--基于深度学习的图像超分辨率系统
开发语言·python·深度学习