2016/11/27(日) [n年前の日記]
#3 [python] PySide の QImage を QPixmap に変換するとアルファチャンネルが消える問題
QImageの全ドットが不透明な状態で、QPixmap.fromImage(QImage) を使って QPixmap に変換すると、QPixmap のアルファチャンネルが消滅する、という問題に遭遇。
PySide.QtCore.Qt.ImageConversionFlag の、Qt.NoOpaqueDetection を指定してやれば問題を回避できる。QPixmap.fromImage(QImage, Qt.NoOpaqueDetection) といった感じで指定する。以下のドキュメント内で、ImageConversionFlag でページ検索すれば説明が読める。
_Qt - PySide v1.0.7 documentation
参考までに、Google翻訳の結果をそのまま引用。
PySide.QtCore.Qt.ImageConversionFlag の、Qt.NoOpaqueDetection を指定してやれば問題を回避できる。QPixmap.fromImage(QImage, Qt.NoOpaqueDetection) といった感じで指定する。以下のドキュメント内で、ImageConversionFlag でページ検索すれば説明が読める。
_Qt - PySide v1.0.7 documentation
参考までに、Google翻訳の結果をそのまま引用。
Qt.NoOpaqueDetection全ドットに対して、透明・半透明部分の有無をチェックしながら変換してたのか…。
イメージに不透明でないピクセルが含まれているかどうかを確認しないでください。 画像が半透明で、不透明でないピクセルが見つかるまで画像のピクセルをチェックするオーバーヘッドを避けたい場合や、その他の理由でピックスマップにアルファチャンネルを保持させたい場合は、これを使用します。 画像にアルファチャンネルがない場合、このフラグは効果がありません。
[ ツッコむ ]
以上です。