Travailler avec des images en Python

Travailler avec des images en Python

PIL est la bibliothèque d'imagerie Python qui fournit à l'interpréteur Python des capacités d'édition d'images. Il a été développé par Fredrik Lundh et plusieurs autres contributeurs. Pillow est le fork convivial de PIL et une bibliothèque facile à utiliser développée par Alex Clark et d'autres contributeurs. Nous travaillerons avec Pillow.

Installation:

  • Linux : Sur le terminal Linux, tapez ce qui suit :
     pip install Pillow  Installation de pip via le terminal :  
     sudo apt-get update   
    sudo apt-get install python-pip
  • Fenêtres : Télécharger le package Pillow approprié en fonction de votre version de python. Assurez-vous de télécharger en fonction de la version de Python dont vous disposez.

Nous allons travailler ici avec le module Image qui fournit une classe du même nom et fournit de nombreuses fonctions pour travailler sur nos images. Pour importer le module Image, notre code doit commencer par la ligne suivante :

  from PIL import Image  

Opérations avec des images :

  • Ouvrez une image particulière à partir d'un chemin : Python
       #img = Image.open(path)    # On successful execution of this statement   # an object of Image type is returned and stored in img variable)   try  :   img   =   Image  .  open  (  path  )   except   IOError  :   pass   # Use the above statement within try block as it can    # raise an IOError if file cannot be found    # or image cannot be opened.   
  • Récupérer la taille de l'image : Les instances de la classe Image créées ont de nombreux attributs, l'un de ses attributs utiles étant la taille. Python
       from   PIL   import   Image   filename   =   'image.webp'   with   Image  .  open  (  filename  )   as   image  :   width     height   =   image  .  size   #Image.size gives a 2-tuple and the width height can be obtained   
    Certains autres attributs sont : Image.width Image.height Image.format Image.info etc.
  • Enregistrer les modifications dans l'image : Pour enregistrer les modifications que vous avez apportées au fichier image, nous devons indiquer le chemin ainsi que le format de l'image. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • Rotation d'une image : La rotation de l'image a besoin de l'angle comme paramètre pour faire pivoter l'image. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Angle given   img   =   img  .  rotate  (  180  )   #Saved in the same relative location   img  .  save  (  'rotated_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    faire pivoter une image en python Remarque : Il existe un indicateur d'expansion facultatif disponible comme argument de la méthode de rotation qui, s'il est défini sur true, agrandit l'image de sortie pour la rendre suffisamment grande pour contenir l'image entièrement pivotée. Comme le montre l'extrait de code ci-dessus, j'ai utilisé un chemin relatif où mon image se trouve dans le même répertoire que mon fichier de code python, un chemin absolu peut également être utilisé.
  • Recadrage d'une image : Image.crop(box) prend une coordonnée de pixel à 4 tuples (gauche en haut à droite en bas) et renvoie une région rectangulaire de l'image utilisée. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   area   =   (  0     0     width  /  2     height  /  2  )   img   =   img  .  crop  (  area  )   #Saved in the same relative location   img  .  save  (  'cropped_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    recadrer une image en python
  • Redimensionner une image : Image.resize(size)- Ici, la taille est fournie sous la forme d'une largeur et d'une hauteur de 2 tuples. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   img   =   img  .  resize  ((  width  /  2     height  /  2  ))   #Saved in the same relative location   img  .  save  (  'resized_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    redimensionner une image en python
  • Coller une image sur une autre image : Le deuxième argument peut être un 2-tuple (spécifiant le coin supérieur gauche) ou un 4-tuple (gauche supérieur droit inférieur) - dans ce cas, la taille de l'image collée doit correspondre à la taille de cette région de boîte ou Aucune, ce qui est équivalent à (0 0). Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   #Image on which we want to paste   img   =   Image  .  open  (  'picture.webp'  )   #Relative Path   #Image which we want to paste   img2   =   Image  .  open  (  'picture2.webp'  )   img  .  paste  (  img2     (  50     50  ))   #Saved in the same relative location   img  .  save  (  'pasted_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   ##An additional argument for an optional image mask image is also available.   
    coller une image sur une autre en Python
  • Obtenir un histogramme d'une image : Cela renverra un histogramme de l'image sous forme d'une liste de pixels, un pour chaque pixel de l'image. (Un histogramme d'une image est une représentation graphique de la distribution des tons dans une image numérique. Il contient toutes les valeurs de luminosité contenues dans une image. Il trace le nombre de pixels pour chaque valeur de luminosité. Il aide à effectuer les réglages d'exposition.) à partir de l'image d'importation PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Getting histogram of image   print   img  .  histogram  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    obtenir-un-histogramme-d


  • Transposer une image : Cette fonctionnalité nous donne l'image miroir d'une image Python
        from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #transposing image    transposed_img   =   img  .  transpose  (  Image  .  FLIP_LEFT_RIGHT  )   #Save transposed image   transposed_img  .  save  (  'transposed.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    transposer une image en python
  • Divisez une image en bandes individuelles : La division d'une image en mode RVB crée trois nouvelles images contenant chacune une copie des bandes individuelles d'origine. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #splitting the image   print   img  .  split  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    diviser une image en python
  • tobitmap : Conversion d'une image en bitmap X11 (un format d'image binaire en texte brut). Il renvoie une chaîne contenant un bitmap X11. Il ne peut être utilisé que pour les images en mode 1, c'est-à-dire les images en noir et blanc de 1 bit de pixel. à partir de l'image d'importation PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   print   img  .  mode   #converting image to bitmap   print   img  .  tobitmap  ()   print   type  (  img  .  tobitmap  ())   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    convertir une image en bitmap en python convertir une image en bitmao en python
  • Création d'une vignette : Cette méthode crée une vignette de l'image ouverte. Il ne renvoie pas de nouvel objet image, il apporte lui-même une modification sur place à l'objet image actuellement ouvert. Si vous ne souhaitez pas modifier l'objet image d'origine, créez une copie puis appliquez cette méthode. Cette méthode évalue également la pertinence de maintenir le rapport hauteur/largeur de l'image en fonction de la taille transmise. à partir de l'image d'importation PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #In-place modification   img  .  thumbnail  ((  200     200  ))   img  .  save  (  'thumb.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    créer une vignette d
Créer un quiz