私はこれをしばらくは苦労しています。私はすべてのオプションを使い果たしたように感じます。PyQt5 Python 3.5.0:DDSファイルをQImageに変換
DDSファイルを読み込んでQImageオブジェクトに変換し、QGraphicsViewに表示しようとしています。これまでのところ、私は進歩を遂げてきましたが、今は通過できないような壁を打ちました。
QT forum post, this is where it really started
def readDDSFile(self, filePath, width, height):
glWidget = QGLWidget()
glWidget.makeCurrent()
glWidget.setGeometry(0,0,width,height) # init width and height, in an attempt to force the widget to be the same size as the texture
# works fine, DDS file loads without problem
texture = glWidget.bindTexture(filePath)
if not texture:
return QtGui.QImage()
# Determine the size of the DDS image
glBindTexture(GL_TEXTURE_2D, texture)
self._width = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH)
self._height = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT)
if self._width == 0 and self._height == 0:
return QtGui.QImage()
# up to here, everything works fine, DDS files are being loaded, and, in the line below, rendered. They're just being rendered way too small.
glWidget.drawTexture(QtCore.QRectF(-1,-1,2,2), texture)
return (glWidget.grabFrameBuffer())
と古いグーグルの束:私は私の問題を解決するには運で、これまでのところ、これらのリソースに相談しましたグループディスカッションは基本的に同じことをしています(すべてがそれから始まるようです(私はかかわらず、とにかくそれをインポートすることができないようQGLPixelBufferがサポートされていないようです、PyaQt5で :最後のリンク)私はPyQt5に現在よ
、Pythonのバージョン3.5.0
問題はこれです私はそれをインポートしようとしているので、私はそれがあると推測しています)ので、QGLWidgetをレンダリングプラットフォームとして使用することに限られています。しかし、上記のコードは、正しくテクスチャのサイズを変更していないようです。彼らは私が何をしていても、一貫してあまりにも小さくレンダリングされています。
私はこのコードをTechartistsスレッド(ほとんどの場合はとにかく)から取りました。残念ながら、drawTexture矩形が(-1、-1,2,2)に設定されているため説明はありません。そこに起こっていることを本当に理解していない、私は問題がどこにあるのだろうと推測します。
誰もがこのことについてどんな考えを持っている場合は、私は非常に非常に感謝します...私は私が探し日半を過ごしたように私は私が見た答えを投稿するだろうと思った
乾杯