2016/11/07(月) [n年前の日記]
#1 [python] お絵かきアプリを修正中
昨日書いたPythonスクリプトで、GIMPの着色処理っぽいことが実現できたので、先日書いたPySideを使ったお絵かきアプリモドキに反映させているところ。せっかくだからクラスの構成を変えようとして動かなくなってハマっていたり。
◎ PySideのQImageについてメモ。 :
PySideには画像を保持できる QImage というクラスがあるのだけど、反転や回転の仕方が分かったのでメモ。
水平反転、垂直反転は、 _QImage.mirrored() を使えばできる。以下は、水平反転、垂直反転した画像を取得する例。
回転は、 _QTransform と _QImage.transformed() を使えばできる。以下は、0〜3 の指定値から、0度、+90度、+180度、+270度(-90度)の画像を取得する例。
ちなみに、画像内のピクセル値を取得したり、反転や回転をする際は、QImage を利用するけれど。キャンバスに描画等をする際は _QPixmap を使ったほうが高速らしいのでそちらを使うようで。
_QImageとQPixmapの速度比較 - Sukalog
QImage から QPixmap への変換は、 _QPixmap.fromImage() を使えばできる。
水平反転、垂直反転は、 _QImage.mirrored() を使えばできる。以下は、水平反転、垂直反転した画像を取得する例。
def get_hflip_image(self, img): u"""水平反転したQImageを返す.""" nimg = img.mirrored(True, False) return nimg def get_vflip_image(self, img): u"""垂直反転したQImageを返す.""" nimg = img.mirrored(False, True) return nimg
回転は、 _QTransform と _QImage.transformed() を使えばできる。以下は、0〜3 の指定値から、0度、+90度、+180度、+270度(-90度)の画像を取得する例。
def get_rot_image(self, img, id): u"""回転したQImageを返す.""" deg = id * 90 rot = QTransform() rot = rot.rotate(deg) nimg = img.transformed(rot) return nimg
ちなみに、画像内のピクセル値を取得したり、反転や回転をする際は、QImage を利用するけれど。キャンバスに描画等をする際は _QPixmap を使ったほうが高速らしいのでそちらを使うようで。
_QImageとQPixmapの速度比較 - Sukalog
QImage から QPixmap への変換は、 _QPixmap.fromImage() を使えばできる。
pm = QPixmap.fromImage(qimg)
[ ツッコむ ]
以上です。