[Python][Qt4.6] Problème jpg-tiff

Résolu
zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   -  
zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Là où je travaille, on m'a demander de créer un plugin dans Quantum GIS, un programme permettant le traitement d'image tiff et geotiff. J'utilise Qt pour faire l'interface et je code ensuite en Python. Le problème ses que je suis incapable de lire les .jpg et les .tiff dans mon code Python, se qui est un peu fâcheux puisque ses les seuls extensions que j'ai à utiliser.

Voilà mon code pour vérifier les extensions:
        x = 0  
        format = QtGui.QImageWriter()  
        byteFormat = QtCore.QByteArray()  
        byteFormat = format.supportedImageFormats()  
        strFormat = QtCore.QString()  

        for element in byteFormat:  
            strFormat.append(byteFormat[x])  
            strFormat.append(" - ")  
            x = x + 1  

        self.txtNom.setText(strFormat)  


et mon code pour lire une image:
            imBr = QtGui.QImage(p)  
            pic = imBr.load(p)  

            if pic:  
                valideBr = True  

            else:  
                self.txtRouge.setText("Impossible de charger l'image.")  


Bien entendu, la condition est fausse.

Les recherches que j'ai faites sur internet mon mené à comprendre que Quantum GIS ne lit pas les fichier qjpeg4.dll et qtiff4.dll.

Si quelqu'un saurait comment régler le problème se serait très apprécier. Merci.
Google is your friend.
Wiki is your brain.
A voir également:

6 réponses

zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   12
 
up
0
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Bonjour,


Je ne connais pas Qt et je ne sais pas interfacer deux dispositifs, tels que Quantum GIS et Python dans ton cas.

Mais à la lecture de ton code, il y a des choses qui m'interpellent:


-
   format = QtGui.QImageWriter() 
   byteFormat = QtCore.QByteArray()  
   byteFormat = format.supportedImageFormats()

On se retrouve donc avec byteFormat qui référence la fonction
QtGui.QImageWriter().supportedImageFormats() :
la seconde ligne ne sert à rien, non ?



- Dans

     for element in byteFormat:  
            strFormat.append(byteFormat[x])  
            strFormat.append(" - ")  
            x = x + 1

je vois une "variable" d'itération nommée element qui n'apparaît que dans la pemière ligne, puis il y a byteFormat[x] et x = x + 1 , mais d'où sort x ?

Il semble que tu veuilles itérer sur le contenu de byteFormat

Peut être faut il alors écrire plutôt

     for x in xrange(len(byteFormat)):  
            strFormat.append(byteFormat[x])  
            strFormat.append(" - ") 

ou, en itérant de façon plus pythonienne:

     for element in byteFormat:  
            strFormat.append(element)  
            strFormat.append(" - ") 


Si tu veux à la fois un élément et son numéro d'ordre dans une liste, pense à la fonction très pratique enumerate()

Il doit êre aussi possible de raccourcir en:
     for element in byteFormat:  
            strFormat.append(element + " - ")  





Je ne suis pas capable d'en dire plus.





Nota bene:

si tu pouvais noter que lire deux fois "ses" à la place de "c'est" et "se" à la place de "ce" dans la même phrase est assez éprouvant et contrarie la compréhension, ce serait bien autant pour toi que pour le lecteur
0
zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   12
 
Merci de tes conseils, et désolé des fautes grammaticales.

Je n'essaie pas d'itérer le contenue de byteFormat. J'ai codé ce petit bout de code rapidement qui ne sert qu'à afficher les extensions pouvant être utilisées. J'aurais surement utilisé ta façon, mais j'ai pas trop pensé à ce que je programmais et de toute façon, ce code n'est pas utile à mon programme.

En gros voilà ce que cela m'affiche:
bmp - png - ppm - xbm - xpm - 


Comme tu peut le constater, il n'y a pas les extensions jpg, jpeg, jfif et tif.

Donc merci des clarifications sur l'affichage des extensions, mais mon véritable problème n'est pas là puisque ce bout de code n'est vraiment pas utile à mon programme. Mon véritable problème est que Quantum GIS (ou est-ce un problème avec gdal?) n'arrive pas à trouver les dll permettant la lecture des jpg et tif.

<edit>
Il est écrit dans les spécifications d'installation de Quantum GIS que l'ont doit avoir Qt 4.3, alors que moi j'utilise Qt 4.6. Si quelqu'un connait un moyen de télécharger une version antérieur de Qt pour tester, ce serait apprécié.
</edit>

Google is your friend.
Wiki is your brain.
0
zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   12
 
Voilà! Après trois interminable jours de recherche, je me suis rendu compte que la version de Quantum GIS que j'utilisais ne prenait pas en compte les jpeg et tif. J'ai donc téléchargé la version plus récente (1.4.0 Enceladus) et tout fonctionne correctement:

bmp - ico - jpeg - jpg - png - ppm - tif - tiff - xbm - xpm - 


Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
heyquem Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   131
 
Merci d'avoir rendu compte de la solution.
Et désolé si je n'avais pas compris, je ne connaissais pas bien le sujet.
0
zelos666 Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   12
 
heyquem, dit toi que grâce à ta réponse je sais maintenant qu'on peut accéder à des éléments dans un tableau via une boucle for. ;)

Merci.
0