[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.

Reply via email to