Pythonで画像を回転

Pythonで画像を回転させます。もちろんPyQtを使ってるよ。

まず、QTransformを生成します。
そこからtranslate()とrotate()とを呼び出してsetTransform()でこれらの画像処理を反映させます。そして、QPainterで回転した画像を表示、描画させています。

rotateの値は負だと左回転し、正の値だと右回転(時計回り)します。
注意点としては、原点が画像の中心ではなく、(0,0)で回転していることです。
なので、translate()で座標をずらしてから回転させています。

以下はソース。
import sys
from PyQt4 import QtGui, QtCore, uic
from Foo import Ui_MainWindow

class Sample(QtGui.QMainWindow): 
    def __init__(self, parent = None):
        super(Sample, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.activateWindow()  

    def paintEvent(self,event):
        painter = QtGui.QPainter()
        painter.begin(self)
        painter.setRenderHint(QtGui.QPainter.Antialiasing, True)
        painter.setPen(QtGui.QColor('#FFFFFF'))
        painter.setBrush(QtCore.Qt.white)
        painter.drawRect(event.rect())

        image = QtGui.QImage('sample02.jpg')
        x = (self.width() - image.width()) / 2
        y = (self.height() - image.height()) / 2

        tf = QtGui.QTransform()
        tf.translate(image.width(), image.height())
        tf.rotate(180)
        painter.setTransform(tf)

        painter.drawImage(x, y, image)
        painter.end()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    sample = Sample()
    sample.show()
    sys.exit(app.exec_())

オリジナルの画像
sample02

実行されたアプリケーション
43