[SOLVED] Hello all,
I have found a way to display this and I have posted the solution below. Unfortunately I did not find a way to actually display the DDS file so I had to run a convert under the hood using Image Magick (great tool). I then ran the TGA file image through the rungs of formatting the data to generate a pixmap. Anyway here are the functions I used to help my situation. I hope it helps some people!! *CODE:* def convertDDS(self, ddsPath='', imageMagickDir='', overlay=False): """ Convert the DDS files passed in to a tga file """ convert = imageMagickDir+'\\convert' if overlay: tempOutPath = r'D:\\magickOverlayOut.tga' else: tempOutPath = r'D:\\magickOut.tga' subprocess.call([convert, ddsPath, tempOutPath]) return tempOutPath def returnQPixmapFromImage(self, inputPath='', overlayPath=''): # We turn out input paths into ImageQt objects for Qt to use later inImg = Image.open(inputPath) inputImg = ImageQt.ImageQt(inImg) overImg = Image.open(overlayPath) overlayImage = ImageQt.ImageQt(overImg) # Creating the input image into a QPixmap pix = QtGui.QPixmap.fromImage(inputImg) pix = pix.scaled(512, 512, QtCore.Qt.KeepAspectRatioByExpanding) pixHeight = round(pix.size().height(), 2) pixWidth = round(pix.size().width(), 2) # Creating the overlay images overlayPix = QtGui.QPixmap.fromImage(overlayImage) overlayImage = QtGui.QPixmap.toImage(overlayPix) overlayImage = overlayImage.scaled(pix.size(), QtCore.Qt.KeepAspectRatio) # Check the image has an alpha channel so we can remove it for preview if pix.hasAlpha(): qtFormat = QtGui.QImage.Format_RGB32 else: # We need this for DXT1's/TGA's without an alpha. For some reason it crashes the app qtFormat = QtGui.QImage.Format_ARGB32 # Converting to QImage and removing the alpha then back to pixmap again stripAlpha = QtGui.QPixmap.toImage(pix).convertToFormat(qtFormat) myQImg = stripAlpha painter = QtGui.QPainter() painter.begin(myQImg) painter.drawImage(0, 0, overlayImage) painter.end() finalImage = QtGui.QPixmap.fromImage(myQImg) return finalImage, pixHeight, pixWidth On Monday, 17 August 2015 15:26:49 UTC+2, Benjam901 wrote: > > Hello all, > > I am having some trouble loading a dds file into PyQt for displaying in a > window. > > I have dug around and I keep being pointed towards OpenGL.GL and QtOpenGL. > I found a function on tech artists forum > http://tech-artists.org/forum/showthread.php?5196-Simple-DDS-loader that > supposedly returns a Qimage from a dds filepath but when the function tries > to bind the texture it fails instantly or returns 0. Am I missing a step > before trying to bind the image? > > I have also tried a custom fucntion earlier using QtOpenGL but I have had > no luck so far > > There doesn't seem to be a huge amount of info out there on this so > hopefully someone on here can help shine a light! > > The code is below to ilustrate my issue: > > import osimport sysfrom PyQt4 import QtGui, QtCorefrom PyQt4.QtOpenGL > import *from OpenGL.GL import * class ShaderCoordWindow(QtGui.QDialog): > def __init__(self): QtGui.QDialog.__init__(self) global coordWindow > coordWindow = QtGui.QDialog() coordWindow.resize(512, 512) > coordWindow.setWindowTitle("Objects to skin") > coordWindow.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) testDDS = r'D: > \\test.dds' testJPG = r'D:\\test_jpg.jpg' jpgPixMap = > QtGui.QPixmap(testJPG) qFileDDS = fileDDS(testDDS) testImg = > QtGui.QPixmap.fromImage(qFileDDS._qImage) imageLabel = > QtGui.QLabel(coordWindow) imageLabel.setPixmap(testImg) layout = > QtGui.QHBoxLayout() layout.addWidget(imageLabel) > coordWindow.setLayout(layout) coordWindow.show() > ############################################################################# > DDS file readerclass fileDDS(object): """This class represnts a generic > DDS file as a QImage""" #global gDebug > ... -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/ef762d9a-7a56-4a2f-ac6b-09c84eb4b16c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.