как повернуть растровое изображение

Я получаю растровое изображение 800 на 600 на 3 и передаю его в качестве параметра glDrawPixels(). Прежде чем передать это glDrawPixels, я хочу повернуть растровое изображение на 90 градусов. это возможно?

если бы это было не растровое изображение, а изображение типа png, я бы сделал следующее:

QMatrix rm;

rm.rotate(90);

pixmap = pixmap.transformed(rm);

pixmap.scaled(801, 701);

texture = bindTexture(pixmap);

person Sam    schedule 28.11.2013    source источник
comment
Вы не можете указать QPixmap в качестве параметра glDrawPixels. Какой у вас фактический код?   -  person peppe    schedule 29.11.2013
comment
QMatrix устарел, вместо него используйте QTransform.   -  person Pavel Strakhov    schedule 29.11.2013
comment
Да, я это знаю, представьте, что у меня есть массив BGR, прежде чем передать его в glDrawPixels, как я могу повернуть его на 90 градусов?   -  person Sam    schedule 29.11.2013


Ответы (2)


Как ответил liuyi.luo, обычный способ сделать это - использовать QImage и передать необработанные данные в требуемом формате перед преобразованием.

К сожалению, Qt не поддерживает порядок каналов BGR. Вам придется найти стороннюю библиотеку или свернуть свой собственный алгоритм, что должно быть довольно тривиально, если вы поворачиваетесь на 90 градусов. Вот достойная реализация вращения на месте.

person cmannett85    schedule 29.11.2013
comment
Этот способ хитрый, но я не понимаю его полностью. Я получаю пакет 800 на 600 на 3 и добавляю его в массив, пока он не прочитает точно размер растрового изображения. Теперь я имею дело с массивом 800 на 600 на 3, как я должен поменять местами его столбцы и строки! - person Sam; 29.11.2013
comment
Не обращайте внимания на мое предположение о реализации, это вообще не сработает! Я отредактировал ссылку на проверенный и проверенный. - person cmannett85; 29.11.2013

person    schedule
comment
Как я уже говорил, это не то, что я ищу. У меня есть массив 8000 на 600 на 3 исходных данных BGR. прежде чем передать это glDrawPixels, я хочу повернуть его, но как? - person Sam; 29.11.2013
comment
еще раз отмечу, что массив содержит необработанные данные изображения без заголовка, приведенный выше код предназначен для изображения с заголовком png. - person Sam; 29.11.2013