Разрабатываю приложение для редактирования растровой графики. В этом приложении мне нужно создать функцию строки развертки, которая будет делать то же самое, что и функция строки развертки в классе QImage. Но я немного смущен тем, как работает функция сканирования и в целом со строкой сканирования. Например, когда я вызываю bytesPerLine () для изображения высотой 177 пикселей, я ожидал, что значение будет 531 (3 байта на каждый пиксель), но эта функция возвращает 520?
Кроме того, когда я использую uchar data = image->scanLine(y)[x]
для R = 249 G = 249 B = 249, значение в переменных данных равно 255. Я действительно не понимаю это значение. Заранее спасибо :)
QImage
? Это напрямую влияет на размер в байтах и формат каждого заданного пикселя. Из документации: ›Если вы обращаетесь к данным изображения с 32 битами на пиксель, приведите возвращаемый указатель к QRgb * (QRgb имеет 32-битный размер) и используйте его для чтения / записи значения пикселя. Вы не можете использовать указатель uchar * напрямую, потому что формат пикселей зависит от порядка байтов на базовой платформе. Используйте qRed (), qGreen (), qBlue () и qAlpha () для доступа к пикселям. - person Evan Teran   schedule 03.12.2011