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);
}
相关推荐
weixin_4604435614 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰15 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
Cc.Y18 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
sm_9267870518 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev18 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by2099918 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说18 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha18 小时前
Lambda 表达式和函数式接口
java·开发语言
IMPYLH18 小时前
HTML 的 <video> 元素
前端·html
bug和崩溃我都要18 小时前
QT 开发的专业截图录屏工具 - macOS版 / Windows版
windows·qt·mac·录屏·截屏