Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bibliothèque PIL

    26 décembre 2016 à 15:31:33

    Bonjour, 

    Je possède actuellement la la version 2.1 de Python et pour un devoir d'ISN j'ai besoin d'installer la Bibliothèque PIL. Pour cela j'ai téléchargé la bibliothèque mais je ne sais pas dans quel dossiers de Python il faut la mettre ? J'ai essayé dans le dossier Library mais ça ne marche pas ...

    Pouvez-vous m'aidez ?

    Merci d'avance 

    • Partager sur Facebook
    • Partager sur Twitter
      26 décembre 2016 à 16:08:07

      La version 2.1 ??? Tu arrives du 20ème siècle ou quoi?

      Pour la version 2, on en est à la version 2.7.13. Sinon la dernière version est la 3.6.0. Il faudrait d'abord te mettre à jour avant qu'on puisse t'aider à installer PIL.

      • Partager sur Facebook
      • Partager sur Twitter
        26 décembre 2016 à 16:45:13

        ah mince petite erreur dsl

        je suis sur edupython et non pas sur python ...

        • Partager sur Facebook
        • Partager sur Twitter
          26 décembre 2016 à 16:55:21

          Ok. Il semblerait que la dernière version de EduPython utilise Python 3.4 sous le capot.

          Alors pour installer PIL, qui s'appelle à présent Pillow, tu ouvres un terminal (cmd.exe) et tu fais : py -3 -m pip install Pillow.

          -
          Edité par Dan737 26 décembre 2016 à 16:56:27

          • Partager sur Facebook
          • Partager sur Twitter
            26 décembre 2016 à 17:11:39

            j'ai taper ce que vous m'avez donné dans l'invite de commande mais sa me marque "'py' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes"

            • Partager sur Facebook
            • Partager sur Twitter
              26 décembre 2016 à 17:21:40

              Ah... Il faudrait que tu localises où se trouve le répertoire d'installation de Python (dans EduPython). Dedans tu y trouveras un répertoire Scripts dans lequel se trouve le programme pip.exe. L'idée est d'aller dans ce répertoire depuis ton terminal et de faire pip install Pillow.

              Alternativement, tu pourrais essayer de lancer ce script python:

              import pip
              pip.main(["install", "Pillow"])
              
              • Partager sur Facebook
              • Partager sur Twitter
                26 décembre 2016 à 17:35:25

                Grâce à la deuxième technique j'y suis arrivée merci

                Mais par contre edupython me dit que c'est déjà installer, pourtant quand je lance un programme il me dit que la commande ".size" n'est pas attribuer ... je ne comprend pas. Pouvez-vous m'aidez ? voici la ligne de code qui ne passe pas :

                drfr_size=drapeaufr.size



                • Partager sur Facebook
                • Partager sur Twitter
                  26 décembre 2016 à 17:54:39

                  Impossible de vous aider ainsi. Il faut nous donner un code minimaliste permettant de reproduire le problème, et nous indiquer l'entièreté de message d'erreur avec son Traceback.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 décembre 2016 à 15:39:56

                    Voilà mon code en entier : (je précise que ce code est pour former un cadre noir de 2 pixels de large sur une photo, et également que le code comporte surement des erreurs car je suis justement en train de le tester)

                    from PIL import Image
                    
                    drapeaufr=open("drapeaufr.ppm","r")
                    ligne=drapeaufr.readline()
                    ligne=drapeaufr.readline()
                    ligne=drapeaufr.readline()
                    drfr_size=drapeaufr.size
                    drapeaucadre=Image.new("RGB",(drfr_size[0]+2*2,drfr_size[1]+2*2),(0,0,0))
                    for y in range (drfr_size[1]):
                        for x in range (drfr_size[0]):
                            r=int(drapeaufr.readline())
                            v=int(drapeaufr.readline())
                            b=int(drapeaufr.readline())
                            drapeaufr.putpixel((x,y),(r,v,b))
                    drapeaufr.close()
                    drapeaufr.save("drapeaufr.png","PNG")

                    et voici le message d'erreur :

                    Traceback (most recent call last):

                      File "<string>", line 420, in run_nodebug

                      File "G:\ISN\Exercice 4 2 b.py", line 7, in <module>

                        drfr_size=drapeaufr.size

                    AttributeError: '_io.TextIOWrapper' object has no attribute 'size'

                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 décembre 2016 à 16:07:52

                      drapeaufr est un fichier que tu as ouvert. Les objets _io.TextIOWrapper qui représentent les fichiers textes n'ont pas d'attribut size. Hors tu appelles cette méthode en ligne 7.

                      Qu'essaies-tu de faire en ligne 7 ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 décembre 2016 à 16:12:51

                        En ligne 7, je cherche a déterminer la taille de la photo.

                        Mais je pense avoir compris d'où vient mon erreur, je ne n'ais pas autoriser l'image a être "écrite" mais juste a être "lue". <-- je viens d'essayer cela ne marche pas.

                        -
                        Edité par Frittilaire 29 décembre 2016 à 16:14:33

                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 décembre 2016 à 16:35:46

                          Frittilaire a écrit:

                          En ligne 7, je cherche a déterminer la taille de la photo.

                          Ok, mais comment vas-tu trouver la taille de l'image ? Tu n'expliques pas grand chose, tu sais... Donc je vais te faciliter un peu le boulot.

                          Tu essaies de trouver la taille d'une image au format Portable Pixmap (voir documentation).

                          Comme indiqué dans la doc, on trouve dans ce fichier tout d'abord 2 octets formant le nombre magique. Il indique le type de format (PBM, PGM, ou PPM) et la variante (binaire ou ASCII). Ensuite il y a un caractère d'espacement (retour à la ligne le plus souvent), un nombre encodé sous forme ASCII (la largeur), un autre espacement et la hauteur (toujours en ASCII).

                          Ce sont donc ces deux valeurs que tu dois lire, transformer en entier (int) et multiplier entre elles pour trouver la taille de ton image.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 décembre 2016 à 16:52:20

                            Oui je vois comment faire avec cette technique mais mon prof m'a demander d'utiliser la commande ".size". A quoi sert-elle dans se cas ???       

                            -
                            Edité par Frittilaire 29 décembre 2016 à 16:57:48

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 décembre 2016 à 17:11:06

                              .size n'est pas une commande. C'est un attribut. Et c'est un attribut d'une image définit par PIL. Je ne sais pas ce que tu dois faire, vu que tu es avare en information.

                              Vu que tu utilises PIL, tu devrais juste ouvrir l'image avec PIL et non comme un fichier texte. Ceci te retournera un objet de type Image qui lui possède un attribut size qui te donnera la taille de ton image, quel que soit son format.

                              Pour savoir comment ouvrir une image avec PIL, on va lire la documentation ici : http://pillow.readthedocs.io/en/latest/

                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 décembre 2016 à 17:48:55

                                Voici la consigne de mon exercice :

                                Ajouter un cadre noir de deux pixels de large autour du drapeau français (il faudra utiliser les méthodes open("nomFichier.png")de l'objet Image, ainsi que size et putpixel((x,y)) de l'objet imagepng).

                                J'ai un peu retravailler mon code avec les indications que vous m'avez fournie :

                                from PIL import Image
                                
                                drapeaufr=Image.open("drapeaufr.png")
                                drapeaufrr=open("drapeaufr.png","r")
                                drfr_size=drapeaufr.size
                                drapeaucadre=Image.new("RGB",(drfr_size[0]+2*2,drfr_size[1]+2*2),(0,0,0))
                                for y in range (2,drfr_size[1]+2):
                                    for x in range (2,drfr_size[0]+2):
                                        r=drapeaufrr.readline()
                                        v=drapeaufrr.readline()
                                        b=drapeaufrr.readline()
                                        drapeaucadre.putpixel((x,y),(r,v,b))
                                drapeaufr.close()
                                drapeaufrr.close()
                                drapeaucadre.save("drapeaucadre.png","PNG")
                                drapeaucadre.close()

                                Mais le logiciel ne veut pas me prendre le putpixel il me dit :

                                Traceback (most recent call last):

                                  File "<string>", line 420, in run_nodebug

                                  File "G:\ISN\Exercice 4 2 b.py", line 12, in <module>

                                    drapeaucadre.putpixel((x,y),(r,v,b))

                                  File "C:\EduPython\App\lib\site-packages\PIL\Image.py", line 1512, in putpixel

                                    return self.im.putpixel(xy, value)

                                TypeError: an integer is required (got type str)

                                -
                                Edité par Frittilaire 29 décembre 2016 à 18:13:41

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 décembre 2016 à 18:01:17

                                  Salut,

                                  Juste pour vous informez, pour installer un module via pip, en windows.

                                  Il faut ouvrir une fenêtre ms-dos et se diriger vers le dossier du python  exemple: (C:\python35\Scripts\)

                                  ensuite on choisit la bonne version de l'exécutable pip, (pip35.exe, pip34.exe, pip.exe)

                                  #UPDATE PIP
                                  pip.exe -m pip install --update pip
                                  #pip35.exe, pip34.exe
                                  
                                  pip35.exe install pillow
                                  
                                  


                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Bibliothèque PIL

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown