如何旋转位图图像

时间:2013-11-28 21:40:53

标签: qt opengl qt4 qt5

我通过3位图图像接收800乘600,并将其作为参数提供给glDrawPixels()。在给glDrawPixels这个之前,我想将位图旋转90度。那可能吗?

如果它不是位图而是像png这样的图像,我会执行以下操作:

QMatrix rm;

rm.rotate(90);

pixmap = pixmap.transformed(rm);

pixmap.scaled(801, 701);

texture = bindTexture(pixmap);

2 个答案:

答案 0 :(得分:9)

QImage srcImg(":/icon.png");
QPoint center = srcImg.rect().center();
QMatrix matrix;
matrix.translate(center.x(), center.y());
matrix.rotate(90);
QImage dstImg = srcImge.transformed(matrix);
QPixmap dstPix = QPixmap::fromImage(dstImg);

答案 1 :(得分:1)

正如liuyi.luo所回答的,正常的做法是使用QImage并在转换之前传入所需格式的原始数据。

不幸的是,Qt不支持BGR频道订单。您将不得不找到第三方库,或者滚动您自己的算法 - 如果您使用90度旋转,这应该是非常简单的。 Here是一个适当的就地轮换实施。