Для надежного поведения вы должны проверить возвращаемое значение QImage::format()
, чтобы увидеть, какой базовый формат используется перед доступом к необработанным данным изображения.
Кажется, Qt предпочитает формат RGB32
/ ARGB32
для true-цветы, где каждый пиксель занимает 4 байта, независимо от того, существует альфа-канал или нет (для формата RGB32
он просто заполнен 0xff
).Если вы загружаете изображение в истинном цвете, оно, вероятно, имеет один из этих двух форматов.
Кроме того, порядок байтов может быть разным на разных платформах, используйте QRgb
для доступа к 32-битным пикселям, когда это возможно.
Кстати, разве линия сканирования не должна быть горизонтальной?Я думаю, что вы должны использовать width()
вместо height()
для расчета длины линии сканирования.