如果使用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);
}