MODULE PIL

FONCTIONS

Image est la classe la plus importante du module PIL.

Fonction

Effet

im=Image.open(fichier)

pour ouvrir un fichier contenant une image, on utilise la fonction (ligne 5)).

im.format()

Donne le format de l’image : png, jpeg, bmp,….

im.size()

La taille est un tuple (largeur hauteur)

im.mode()

Donne le mode l’image : RGB, RGBA ,L, P

im.show()

Affiche l’image.

im.save("nom","format")

Sauvegarde l’image avec le nom et le format choisit.

MODE D’IMAGES :

Note

Modes d’images : Le mode d’une image définit le type et la profondeur d’un pixel dans l’image. La sortie actuelle soutient le suivant Modes standard : 1 (pixels de 1 particule, noirs et blancs, stocké avec un pixel par octet) L (pixels de 8 particules, noir et blanc) P (pixels de 8 particules, dressés la carte à un autre mode utilisant une palette colorée) RGB (3x8-pixels) RGBA (4x8-pixels, couleur avec masque de transparence) CMYK (4x8-bit-pixels) JPEG PIL fournit aussi l’appui limité pour quelques modes spéciaux, y compris LA (L avec l’alpha), RGBX (la vraie couleur avec la remplissage) Et RGBA (vraie couleur avec alpha).

TAILLE D’IMAGES :

python -m pip install --upgrade Pillow

Programme

Résultat

#0805 taille photo.py
from PIL import Image
from os import*
#nom du repertoire où l'on se situe
repertoire=getcwd()
fichier=repertoire+'/1.png'
im = Image.open(fichier)
print ("Nom du fichier : ",fichier,'\n'\
         "Format :" ,im.format,'\n'\
         "taille","%dx%d" % im.size,'\n'\
         "Mode : ",im.mode)
print(fichier,im.format,im.size,im.mode)
Nom du fichier :  D:\python\python 2017\08 manipuler fichiers/1.png
Format : PNG
taille 1000x640
Mode :  RGBA
D:\python\python 2017\08 manipuler fichiers/1.png PNG (1000, 640) RGBA
_images/image190.png

AFFICHAGE D’UNE IMAGE :

Programme

Résultat

programme     Résultat
from PIL import Image
try:
       im = Image.open('1.png')
       im.show()
except:
       pass
_images/image192.png

CONVERSION D’IMAGES :

DECOMPOSITION D’UNE IMAGE :

Note

rgba rgba(0,0,0,0). La dernière valeur (l’alpha) indiquant le degré d’opacité entre 0 et 1.

Fonction

Effet

#0808 decomposition.py
from PIL import Image
img = Image.open("2.png")
# Récupération des différentes
#composantes de l'image
print( img.split() )
r,g,b,a=img.split()
#enregistre l'image en rouge
r.save('rouge.jpg')
#enregistre l'image en vert
g.save('vert.jpg')
#enregistre l'image en bleu
b.save('bleu.jpg')
rouge=Image.open('rouge.jpg')
rouge.show()
vert=Image.open('vert.jpg')
vert.show()
bleu=Image.open('bleu.jpg')
bleu.show()
_images/image194.png _images/image198.png

REDIMENSION ET DECOUPE :

Redimensionnement et découpe d’une image :

Fonction Effet
im.resize(largeur,hauteur)
Redimensionne l’image en largeur et hauteur.
im_out=Image.new(mode,nom)
img_out est une nouvelle image avec le mode et le nom donnés en paramètres.
p=im.getpixel(x,y)
p est le pixel récupéré de la colonne x et de la ligne y.
img_out.putpixel((x,y),p)
le pixel p va être installé sur la colonne x et la ligne y de l’image img_out
programme Résultat

#0808 redimensionne decoupe.py

import os #bibliothèque pour le travail sur les dossier

from PIL.Image import *

from PIL import Image

 

def Tableau(ligne,colonne,liste):

      "fabrication d'un tableau lignes colonnes"

      tableau=ligne*[0]

      for ln in range(ligne):table[ln]=colonne*[0]

      for ln in range(0,ligne):

            for cn in range(0,colonne):

                  tableau[ln][cn]=liste[clne*ln+cn]

      return tableau

def redimensione(nom,nom_image,largeur,hauteur):

      "redimensionne une image"

      img_in=Image.open(nom_image)

      C,L=img_in.size

      img_out=Image.new("RGB",(largeur,hauteur))

      img_out=img_in.resize((largeur,hauteur))

      img_out.save(nom+'.png')

      return img_out

           

def decoupe(nom_image,largeur,hauteur):

      "decoupe une image en 20 images"

      img_in=Image.open(nom_image)

      C,L=img_in.size

      nbcol=int(C/largeur)

      nblig=int(L/hauteur)

      print(nbcol,C,largeur,nblig,L,largeur)

      col=C//nbcol

      colo=C//col

      lig=L//nblig

      lign=L//lig

      img_out=Image.new("RGB",(col,lig))

      for i in range(int(nblig)):

            ligne=i

            ldebut=ligne*lig

            lfin=lig+ldebut

            for j in range(nbcol):

                  colonne=j

                  cdebut=colonne*col

                  cfin=cdebut+col

                  for ln in range(ldebut,lfin):

                        for cn in range(cdebut,cfin):                   

                              p=img_in.getpixel((cn,ln))

                              ccn=cn%col

                              lln=ln-lig*ligne

                              img_out.putpixel((ccn,lln),p)

                  numero=i*nbcol+j+1

                  print(p)

                  img_out.save(str(numero)+'s.png')

                                  

rep_cour=os.getcwd() #répertoire courant

print ("répertoire courant :",rep_cour)

os.chdir(rep_cour) #on s'y déplace !

print(os.getcwd()) #vérification

print ("tout est en ordre !")

nom_image=input("Donner le nom de l'image : ")

img_in=Image.open(nom_image)

print ("Nom de l'image :",nom_image)

print("Format de l'image :",img_in.format)

#tuple (Colonnes,Lignes)

print ("Taille de l'image :",img_in.size)

print ("Mode de l'image :",img_in.mode) #niveaux de gris

nom=input("Donner le nom de la nouvelle image : ")

largeur=int(input("Donner la nouvelle largeur : "))

hauteur=int(input("Donner la nouvelle hauteur : "))

decoupe(nom_image,largeur,hauteur)

img_out=redimensione(nom,nom_image,largeur,hauteur)

Image initiale

Images redimensionnées.

_images/pil04.png

D:\python\08manipulerfichiers\redimensione

tout est en ordre !

Donner le nom de l'image : grande.png

Nom de l'image : grande.png

Format de l'image : PNG

Taille de l'image : (600, 300)

Mode de l'image : RGBA

Donner le nom de la nouvelle image : petite

Donner la nouvelle largeur : 200

Donner la nouvelle hauteur : 100

3 600 200 3 300 200

(0, 0, 0, 255)

(0, 0, 0, 255)

(244, 244, 244, 255)

(0, 0, 0, 255)

(0, 0, 0, 255)

(244, 244, 244, 255)

(0, 0, 0, 255)

(0, 0, 0, 255)

(244, 244, 244, 255)

educationdunumerique.fr. Tous  droits réservés. D Pérarnaud Limoges.